Maison > Questions et réponses > le corps du texte
J'ai une chaîne simple avec quelques caractères répétitifs. Quelqu'un peut-il m'aider à corriger l'expression ci-dessous pour supprimer non seulement les caractères en double, mais également tous les caractères qui apparaissent plus d'une fois.
console.log('aaabbxxstring'.replace(/(.)(?=.*?)/g,'')); // string
J'utilise l'anticipation pour capturer les caractères correspondants et remplacer la correspondance par des espaces. La question est de savoir comment remplacer le groupe de capture lui-même. Ou toute l’approche est-elle incorrecte ?
P粉4169968282024-04-01 09:45:52
console.log('aaabbxxstring'.replace(/(.)+/g, '')); // string
Description :
(.) captures a single character. + matches one or more occurrences of the captured character. /g performs a global search to replace all occurrences.
P粉7574324912024-04-01 00:37:29
Lorsque vous divisez une chaîne autour de caractères, utilisez la longueur du tableau résultant pour compter les occurrences.
str.split(c).length
Vous donne le nombre d'occurrences plus 1.
Convertissez la chaîne en tableau, filtrez en utilisant le nombre d'occurrences, concaténez-la en chaîne.
var str = 'aaabxbxxstring';
const count = (str, c) => str.split(c).length - 1
str = [...str].filter(c => count(str,c) < 2).join('')
console.log(str);