我找到了一种使用正则表达式从字符串中删除重复字符的方法。
function RemoveDuplicates() {
var str = "aaabbbccc";
var filtered = str.replace(/[^\w\s]|(.)\1/gi, "");
alert(filtered);
}
输出:abc
这工作正常。
但如果str = "aaabbbccccabbbbcccccc"
则输出为abcabc
。
有没有办法只获取唯一的字符或删除所有重复的字符?
如果有任何办法,请告诉我。
答案 0 :(得分:29)
前瞻如“这个,后面跟着什么,这个”:
var str = "aaabbbccccabbbbcccccc";
console.log(str.replace(/(.)(?=.*\1)/g, "")); // "abc"
请注意,这会保留每个字符的 last 次出现:
var str = "aabbccxccbbaa";
console.log(str.replace(/(.)(?=.*\1)/g, "")); // "xcba"
没有正则表达式,保留顺序:
var str = "aabbccxccbbaa";
console.log(str.split("").filter(function(x, n, s) {
return s.indexOf(x) == n
}).join("")); // "abcx"
答案 1 :(得分:9)
这是一个老问题,但在ES6中我们可以使用Sets。代码如下所示:
var test = 'aaabbbcccaabbbcccaaaaaaaasa';
var result = Array.from(new Set(test)).join('');
console.log(result);