java supprimer un modèle de chaîne à l'aide de regex
J'ai besoin de vider mon chaîne de la sous-chaînes suivantes:
\n
\uXXXX
(X
être un chiffre ou un caractère)
par exemple "OR\n\nThe Central Site Engineering\u2019s \u201cfrontend\u201d, where developers turn to"
-> "OR The Central Site Engineering frontend , where developers turn to"
J'ai essayé d'utiliser la méthode de Chaîne replaceAll mais dnt savoir comment surmonter l' \uXXXX question et il n'a pas fonctionné pour l' \n
String s = "\\n";
data=data.replaceAll(s," ");
comment cette expression semble en java?
merci pour l'aide
Pouvez-vous décrire qu'avez-vous essayé et comment il n'a pas de travail? Aussi votre texte ne regarde pas comme il devrait être rayé de ces personnages, mais plutôt qu'ils devraient être remplacés par des personnages qu'elle représente comme
Alors peut-être vous demandez comment vous pouvez ne pas encoder ces caractères?
J'ai besoin de les remplacer par des espaces blancs. Je n'ai pas besoin d'eux, car sa va être indexé avec Apache lucene, je n'ai besoin que les mots montrant.
"j'ai besoin de les remplacer par des espaces", basé sur votre exemple, vous voulez les supprimer (les remplacer par rien) de ne pas les remplacer par des espaces. Mais de toute façon ce n'est pas difficile tâche si vous avez essayé quelque chose. Pouvons-nous voir votre tente?
traiter avec \n: string.replaceAll("\\n", " "); aussi, j'ai essayé de mettre de \n dans une chaîne de caractères au lieu d'écrire en "inline"
\n
-> séparateur de ligne, \u2019
-> ’
, \u201c
->“
, et ainsi de suite.Alors peut-être vous demandez comment vous pouvez ne pas encoder ces caractères?
J'ai besoin de les remplacer par des espaces blancs. Je n'ai pas besoin d'eux, car sa va être indexé avec Apache lucene, je n'ai besoin que les mots montrant.
"j'ai besoin de les remplacer par des espaces", basé sur votre exemple, vous voulez les supprimer (les remplacer par rien) de ne pas les remplacer par des espaces. Mais de toute façon ce n'est pas difficile tâche si vous avez essayé quelque chose. Pouvons-nous voir votre tente?
traiter avec \n: string.replaceAll("\\n", " "); aussi, j'ai essayé de mettre de \n dans une chaîne de caractères au lieu d'écrire en "inline"
OriginalL'auteur D.Shefer | 2015-08-02
Vous devez vous connecter pour publier un commentaire.
Problème avec
string.replaceAll("\\n", " ");
est quereplaceAll
attend expression régulière, et\
dans la regex est caractère spécial utilisé par exemple pour créer des classes de personnages comme\d
qui représente chiffres, ou pour échapper à une regex caractères spéciaux comme+
.Donc, si vous voulez correspondre
\
dans Javas regex vous avez besoin pour échapper à deux reprises:\\
"\\\\"
.comme
replaceAll("\\\\n"," ")
.Vous pouvez également laisser à moteur d'expressions régulières ne s'échapper pour vous et l'utiliser
replace
méthode commereplace("\\n"," ")
Maintenant de supprimer les
\uXXXX
nous pouvons utiliserreplaceAll("\\\\u[0-9a-fA-F]{4}","")
Rappelez-vous aussi que les Chaînes sont immuables, de sorte que chaque
str.replace..
appel n'affecte passtr
valeur, mais il crée une nouvelle Chaîne. Donc, si vous voulez stocker cette nouvelle chaîne dansstr
vous aurez besoin d'utiliserDe sorte que votre solution peut paraître comme
Vous êtes les bienvenus. Mais j'ai été en mesure de vous donner cette explication seulement parce que vous avez posté votre code de tentatives. Sans elle, je ne poster la solution sans une bonne explication qui vous auraient pas avantage que beaucoup, à l'avenir, toujours poster votre code essaie pour voir ce que vous avez du mal à vous donner les meilleures réponses.
OriginalL'auteur Pshemo
Préférable de le faire en 2 parties, je suppose:
Essayer =)
OK, je n'ai pas été précis. Il semble que l'exemple, nous voyons en question n'est pas littéral de chaîne, mais le texte qui peut être lu à partir du fichier. Donc
\n
n'est pas de séparateur de ligne, mais une chaîne de caractères représentant deux personnages,\
etn
. Donc votre solution fonctionne, mais seulement parce que vous laissez compilateur Java changement\n
en séparateur de ligne, qui peut être compensée par"\n"
ou"\\n"
.OriginalL'auteur Roel Strolenberg