0
votes

Y a-t-il une regex à la méthode String.ReplaceAll qui ne garde que des lettres et des espaces blancs

J'ai fait un programme qui compte la fréquence d'un mot dans une très longue chaîne. Mon problème est que le programme comporte par exemple "*" (considère "une citation) et" il "comme des mots différents et donc les mettre dans différentes catégories.

J'ai essayé de remplacer tous les marques de ponctuation que je connais avec le code suivant: xxx

Malheureusement, le code n'a pas fonctionné et je pense que c'est parce qu'il y a Beaucoup de guillemets différents dans Unicode que je ne peux pas voir une différence entre, il y a donc un moyen de supprimer tous les caractères Unicode, à l'exception des lettres et des espaces blancs avec la méthode String.ReplaceAll ou dois-je faire un chararray et continuer à partir de là ?

Merci beaucoup, toute aide serait appréciée.


0 commentaires

3 Réponses :


1
votes

Je pense que cela pourrait le faire xxx

qui supprimera tous les caractères qui ne sont pas des caractères alphanumériques ou spéciaux.

EDIT: -

comme suggesed par @npinti xxx


2 commentaires

Idéally a-za-z est remplacé par \ p {l} , puisque ce dernier traite avec lettres de toutes les langues, par opposition à Le premier qui ne traite que de lettres du jeu de caractères latin.


Cela a fonctionné mais mon projet est en suédois, donc il a supprimé toutes les lettres suédoises spéciales (Å, Ä et Ö) y a-t-il un moyen d'éviter cela? J'aurais dû le mentionner dans la question, je vais le modifier maintenant.



0
votes

Ceci éliminera toutes les lettres et les espaces blancs. xxx

légende:

  • ^ - exclure des caractères donnés d'être remplacé
  • \\ s - tous les espaces (\ n, \ t, '')
  • a-za-z - toutes les lettres

    Exemple: xxx


2 commentaires

Merci d'avoir expliqué comment cela fonctionne. Savez-vous d'un endroit où je peux en savoir plus sur la façon dont cela fonctionne? Merci encore.


Généralement, Google, mais pour commencer à commencer: Vogella.com/Tutorials/javaregularexpressions/article.htmlLec a>



1
votes

Ceci éliminera tous les caractères non lettres / chiffres et s'ils écraseront les espaces afin de ne pas avoir plusieurs espaces consécutifs:

text = text.replaceAll("[^\\p{L}\\d]+", " ");


0 commentaires