Comment supprimer des caractères répétés dans une chaîne
J'ai un site web qui permet aux utilisateurs de faire des commentaires sur les photos.
Bien sûr, les utilisateurs de laisser des commentaires comme:
'OMGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG!!!!!!!!!!!!!!!'
ou
'VOUS SUCCCCCCCCCCCCCCCCCKKKKKKKKKKKKKKKKKK'
Vous l'obtenez.
Fondamentalement, je veux raccourcir ces commentaires en retirant au moins la plupart de ces excès de caractères répétés.
Je suis sûr qu'il y a un moyen de le faire avec les Regex..je ne peux pas le comprendre.
Des idées?
source d'informationauteur Ed B
Vous devez vous connecter pour publier un commentaire.
En gardant à l'esprit que la langue anglaise utilise des doubles lettres, souvent, vous ne voulez probablement pas à l'aveuglette, de les éliminer. Voici une regex qui va se débarrasser de quelque chose au-delà d'un lit double.
Ne vous souhaitez raccourcir les chaînes de caractères dans le code, ou serait-il suffisant de simplement l'échec de la validation et de présenter le formulaire à l'utilisateur de nouveau avec une erreur de validation? Quelque chose comme "Trop grand nombre de caractères répétés."
Si celle-ci est acceptable,
@"(\w)\1{2}"
doit correspondre à des caractères de 3 ou plus (interprété comme "répétée" deux fois ou plus).Edit: @Piskvor l'a souligné, ce sera le match sur exactement 3 caractères. Il fonctionne très bien pour la correspondance, mais pas pour les remplacer. Sa version,
@"(\w)\1{2,}"
il ne serait pas préférable de la remplacer. Cependant, je tiens à souligner que je pense que le remplacement ne serait pas la meilleure pratique ici. Vaut mieux avoir le formulaire de la validation échoue à faire qu'à essayer de frotter le texte soumis, car il sera probablement edge cas où vous tournez sinon lisible (même si déraisonnable) texte en non-sens.Regex serait exagéré.
Essayez ceci:
Distinctes() va permettre de supprimer tous les doublons, cependant elle ne voit pas de "A" et "A" comme le même, évidemment.
Sorties "Asdfa"
Edit : terrible suggestion, s'il vous plaît ne pas lire, j'ai vraiment mériter mon -1 🙂
J'ai trouvé ici sur technique pépites quelque chose comme ce que vous cherchez.
Il n'y a rien à faire, sauf une très longue regex, parce que je n'ai jamais entendu parler d'une regex signe pour la répétition ...
C'est un exemple, je ne vais pas coller ici, mais je pense que ce sera totalement répondre à votre question.