(.) captures a single character.
\1+ matches one or more occurrences of the captured character.
/g performs a global search to replace all occurrences.
var str = 'aaabxbxxstringaaa';
var map = new Map();
// loop over all the characters and count how many times each character occurs
for(let ch of str) {
let count = map.get(ch);
count = count ? count : 0;
map.set(ch, count + 1);
}
// remove characters occuring more than once:
for(let [ch, count] of map) {
if(count > 1) {
str = str.replaceAll(ch, '');
}
}
console.log(str);
4条答案
按热度按时间dm7nw8vv1#
当您围绕字符分割字符串时,使用结果数组的长度对出现次数进行计数。
给你的次数加1。
将字符串转换为数组,使用出现的情况进行过滤,连接到String。
zy1mlcev2#
说明:
bf1o4zei3#
我认为regex是错误的工具。您需要先计算每个字符在字符串中出现的次数,然后才能决定要删除哪些字符。
使用
Map
来记录字符串中遇到的字符数可能更容易。示例:
免责声明:我不习惯JavaScript,所以可能有更惯用的方法来做到这一点。
wz8daaqr4#
RegEx不是合适的工具,但无论如何,这里有一个思想实验:)