Ich habe eine einfache Zeichenfolge mit einigen sich wiederholenden Zeichen. Kann mir bitte jemand helfen, den folgenden Ausdruck zu korrigieren, um nicht nur doppelte Zeichen, sondern alle Zeichen zu entfernen, die mehr als einmal vorkommen?
console.log('aaabbxxstring'.replace(/(.)(?=.*?)/g,'')); // string
Ich verwende Lookahead, um übereinstimmende Zeichen zu erfassen und die übereinstimmung durch Leerzeichen zu ersetzen. Die Frage ist, wie die einfangende Gruppe selbst ersetzt werden kann. Oder ist der gesamte Ansatz falsch?
console.log('aaabbxxstring'.replace(/(.)\1+/g, '')); // string
說明:
(.) captures a single character. \1+ matches one or more occurrences of the captured character. /g performs a global search to replace all occurrences.
當(dāng)您圍繞字符拆分字符串時,使用結(jié)果數(shù)組的長度來計算出現(xiàn)次數(shù)。
str.split(c).length
為您提供出現(xiàn)次數(shù)加 1。
將字符串轉(zhuǎn)換為數(shù)組,使用出現(xiàn)的次數(shù)進行過濾,連接到字符串。
var str = 'aaabxbxxstring';
const count = (str, c) => str.split(c).length - 1
str = [...str].filter(c => count(str,c) < 2).join('')
console.log(str);