从Delimitted字符串中删除特殊单词

时间:2017-09-18 09:33:27

标签: javascript jquery delimited-text

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

这意味着如果字符串是:

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

输出字符串应为:

  

关键字1,关键字2,keyword4,keyword6

我们如何在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>

5 个答案:

答案 0 :(得分:6)

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

&#13;
&#13;
final Map<WhatEver, LongAdder> result = new HashMap<>();
result.get(WhatEver).increment();
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您应该使用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);
   

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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字符。您只需检查最后一个字符是否为

答案 4 :(得分:1)

这样:

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:每个方法循环执行它,你只是无法以某种形式看到它^^