我有一种情况是从分隔的字符串中删除一些单词,其中最后一个字符是¶。
这意味着如果字符串是:
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>
答案 0 :(得分:6)
使用正则表达式可以解决问题:
final Map<WhatEver, LongAdder> result = new HashMap<>();
result.get(WhatEver).increment();
&#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:每个方法循环执行它,你只是无法以某种形式看到它^^