Split chaîne | séparateur en java
J'ai une chaîne qui ressemble à ça: 1|"value"|;
Je veux briser cette chaîne, et qui ont choisi |
comme séparateur.
Mon code ressemble à ceci:
String[] separated = line.split("|");
Ce que je reçois est un tableau qui contient tous les caractères d'une inscription:
separated[0] = ""
separated[1] = "1"
separated[2] = "|"
separated[3] = """
separated[4] = "v"
separated[5] = "a"
...
Personne ne sait pourquoi?
Je ne peux pas découper une chaîne de caractères avec |
?
Vous devez vous connecter pour publier un commentaire.
|
est traité comme unOR
dans la RegEx. Vous devez donc vous échapper:line.split("\\" + separator)
ne fonctionne pas avec les;
ou,
. Une autre solution seraitline.split("[" + separator + "]")
, car les caractères entre parenthèses sont échappés ainsi.Vous avez pour échapper à la
|
parce qu'il a une signification spéciale dans une regex. Jetez un oeil à lasplit(..)
méthode.La deuxième
\
est utilisé pour échapper à la|
et la première\
est utilisé pour échapper à la deuxième\
:).Le paramètre à
split
méthode est une expression régulière, comme vous pouvez le lire ici. Depuis|
a une signification spéciale dans les expressions régulières, vous devez vous échapper. Le code ressemble alors à ceci (comme d'autres l'ont déjà montré):Essayez ceci:
String[] separated = line.split("\\|");
Ma réponse, c'est mieux. J'ai corrigé l'orthographe de "séparé" 🙂
Aussi, la raison pour laquelle cela fonctionne?
|
moyen "OU" dans la regex. Vous devez vous échapper.Échapper à la pipe. Elle fonctionne.
La pipe est un caractère spécial dans les regex sens OU
Il ne fonctionne pas de cette façon, parce que vous avez pour échapper à la Pipe | première.
L'exemple de code suivant, à l'http://www.rgagnon.com/javadetails/java-0438.html) montre un exemple.
Chaîne.split() utilise les regex, donc vous avez besoin pour échapper à la '|' comme .split("\\|");
vous pouvez remplacer le tuyau avec un autre personnage, comme le '#' devant crève, essayez cette
| moyens OU en regex, vous devez vous échapper. Qui plus est, un seul"\", vous obtenez '\|' ne signifie rien en Java chaîne. Donc vous devriez également échapper à l' '\' elle-même, ce qui donne '\|'.
Bonne chance!