Avez-Vous Besoin D'Échapper le Caractère * en Java?
J'ai donc écrit un petit article de code dans un programme de mine qui utilise la méthode de fractionnement pour analyser et trier les composants individuels ont lieu au sein d'une chaîne. Ci-dessous est un exemple de code:
String[] sArray;
String delimiter = "*";
String test = "TEXT*TEXT*TEXT*";
String a = "";
String b = "";
String c = "";
sArray= test.split(delimiter);
a = sArray[0];
b = sArray[1];
c = sArray[2];
System.out.println("A is: " + a + "\nB is: " + b + "\nC is: " + c);
Cependant, quand je lance ce programme, il renvoie une erreur indiquant que:
Dangling meta character '*' near index 0
J'ai donc googlé cette erreur et a trouvé qu'il peut être lié à un problème avec la façon dont *
peut être considéré comme un caractère générique dans la regex. J'ai donc essayé:
String delimiter = "\*"
Mais qui revient tout juste d'un autre message d'erreur indiquant:
illegal escape character
Quelqu'un a rencontré ce problème avant ou savoir comment vous (si vous avez) échapper à *
en java?
OriginalL'auteur This 0ne Pr0grammer | 2013-01-07
Vous devez vous connecter pour publier un commentaire.
Vous aussi vous avez échapper à la barre oblique inverse:
Parce que la chaîne de caractères littérale
"\\"
est juste une seule barre oblique inverse, de sorte que la chaîne de caractères littérale"\\*"
représente un échappé astérisque.OriginalL'auteur jlordo
La façon de comprendre la solution est de se rendre compte qu'il y a deux "langues" dans le jeu ici. Vous avez le langage des expressions régulières (Java saveur) dans lequel
*
est un méta-caractère qui doit être protégé avec un\
pour représenter un littéral*
. Qui vous donneMais vous êtes en essayant de représenter la chaîne dans la "langue" de Java littéraux de Chaîne où un
\
est le caractère d'échappement. Ce qui nécessite que littérale\
(dans ce que nous essayons de représenter) doit être échappé. Cela vous donneSi vous appliquez cette démarche de pensée homogène "faire d'abord la regex s'échapper, puis de faire un littéral de Chaîne échapper" - vous ne vous trompez pas.
OriginalL'auteur Stephen C
Vous devrez joindre "\" avant "*" comme si vous voulez représenter "\" en java, vous devez utiliser un de plus "\" avant de.
"\"Représente:-----> "\"
Donc, si vous voulez utiliser "" comme délimiteur l'utilisation de "\"
Code Corrigé:
De SORTIE:
OriginalL'auteur manisha mulchandani