Java ne fonctionne pas avec les regex \s, dit: invalid séquence d'échappement
Je veux remplacer tous les espaces dans une chaîne de caractères avec un "+" et tous les "ß" avec "ss"... il fonctionne bien pour le "ß", mais de toute façon eclipse ne me laisse pas utiliser \s pour un blanc.. j'ai essayé le "\t" à la place, mais ça ne fonctionne pas non plus.. j'obtiens l'erreur suivante:
Invalide séquence d'échappement (valables
sont \b \t \n \f \ \ r\\" \'\ )
c'est mon code:
try {
String temp1 = from.getText().toString();
start_from = temp1.replaceAll("ß", "ss");
start_from = start_from.replaceAll("\s", "+");
}
pourquoi ne pas travailler? est-ce un problème avec android, eclipse ou quoi?
merci d'avance!
- Je suis surpris que vous pouvez même compiler \s dans une chaîne littérale. Ajout \t dans une chaîne littérale serait de créer une expression régulière contenant un caractère de tabulation, plutôt que l'expression régulière \t en elle, pour que vous devez \\t dans la chaîne littérale.
- Je n'arrivais pas à le compiler,.. eclipse m'a donné ce message d'erreur que j'ai posté. Je voulais juste vous faire savoir ce que j'essayais de faire.
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour échapper à la barre oblique
Le problème est que
\
est un caractère d'échappement en java ainsi que modèles regex. Si vous souhaitez faire correspondre l'expression régulière pattern\n
, dire, et que vous souhaitez aller de l'avant et à écrireL'expression régulière pattern ne serait pas finir par être
\n
: il ne serait en être un réel retour à la ligne, puisque c'est ce que"\n"
signifie en Java. Si vous voulez le modèle pour contenir une barre oblique inverse, vous devrez vous assurer que vous échapper que la barre oblique inverse, de sorte qu'il n'est pas traité comme un caractère spécial à l'intérieur de la chaîne.Vous pouvez utiliser le java.util.regex.Modèle de classe et de l'utiliser quelque chose comme
p = Pattern.compile("\s");
en combinaison avecp.matcher(start_from).replaceAll("+")
. Sinon, juste d'échapper à votre "\s" comme caractère de remplacement "\\s".Pattern.compile("\s")
est encore une erreur de syntaxe Java.