【问题标题】:Removing special words from Delimitted string从分隔字符串中删除特殊单词
【发布时间】:2017-09-18 09:33:27
【问题描述】:

我有一种情况要从最后一个字符为 ¶ 的分隔字符串中删除一些单词。

这意味着如果字符串是:

keyword1,keyword2,keyword3¶,keyword4,keyword5¶,keyword6

输出字符串应该是:

关键字1,关键字2,关键字4,关键字6

我们如何在 javascript 中实现这一点?

这就是我所做的,但我想在不循环的情况下这样做:

var s='keyword1,keyword2,keyword3¶,keyword4,keyword5¶,keyword6';
s=s.split(',');
var t=[];
$(s).each(function(index,element){
var lastchar=element[element.length-1];
if(lastchar!='¶')
{
t.push(element);
}
});
console.info(t.join(','));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

【问题讨论】:

    标签: javascript jquery csv


    【解决方案1】:

    问题可以用正则表达式解决:

    var s='keyword1,keyword2,keyword3¶,keyword4,keyword5¶,keyword6';
    s=s.replace(/,keyword\d+¶/g, '');
    console.info(s);

    【讨论】:

    • 谢谢。经典方式!
    【解决方案2】:

    您应该在 JS 中使用过滤器功能。

     var _s = "keyword1,keyword2,keyword3¶,keyword4,keyword5¶,keyword6";
     
     var _output = _s.split(",").filter(function(word){
        return (word[word.length - 1] !== "¶");
     }).join(",");
     
     console.log(_output);
       

    【讨论】:

      【解决方案3】:

      正则表达式应该可以工作。它们可能比编写自己的循环慢,但在大多数情况下它们更清晰,您不会注意到差异。

      var s='keyword1,keyword2,keyword3¶,keyword4,keyword5¶,keyword6';
      console.info('original: ' + s);
      var edited = s.replace(/¶.+¶/, '');
      console.info('result: ' + edited);

      【讨论】:

      • 我的错误,我误解了要求。我认为这里的类似答案是正确的,所以我不会费心更新。
      【解决方案4】:
      var s = 'keyword1,keyword2,keyword3¶,keyword4,keyword5¶,keyword6';
      var t = s.split(",").filter(function(word) {
          return !word.slice(-1).match(/[\u{0080}-\u{FFFF}]/gu, "");
      })
      console.info(t);
      

      您可以使用过滤器!显然,这会检查任何不是 ASCII 的字符。您可以简单地检查最后一个字符是否是您的

      【讨论】:

        【解决方案5】:

        这边:

        var str ='keyword1,keyword2,keyword3¶,keyword4,keyword5¶,keyword6';
        
        var keywords = str.split(",");
        
        for(keyword in keywords){
          if(keywords[keyword].includes("¶")){
            keywords.splice(keyword,1);
          }
        }
        
        console.log(keywords);

        PS:每个方法都是循环执行的,只是有些形式是看不到的^^

        【讨论】:

          猜你喜欢
          • 2018-11-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-11
          • 2016-01-23
          相关资源
          最近更新 更多