Java String split avec multicaractère délimiteur
Je suis assez nouveau à Java, et j'ai pensé que cela a fonctionné la même qu'avec les autres langues.
Pour une chaîne de caractères:
String line = "3::Daniel::Louis||##2::Leon: the Professional::1994||6::Jean::Reno||7::Gary::Oldman||8::Natalie::Portman||##3::Scarface::1983||9::Al::Pacino||10::Michelle::Pfeiffer";
Je veux diviser à chaque ||##
.
Mais:
for(String s : line.split("||##")) {
System.out.println("|"+s+"|");
}
retourne:
||
|3|
|:|
|:|
|D|
|a|
|n|
|i|
... etc.
Je m'attendais:
3::Daniel::Louis
Leon: the Professional
... etc.
Ce que je fais mal?
PS: Sont Abel Ferrara "le Roi de New York" ou de Walter Hill "les Rues de Feu" dans la liste ;)?
ha ha ha, juste au hasard des trucs que j'ai reçu de imdb top 200 liste
ha ha ha, juste au hasard des trucs que j'ai reçu de imdb top 200 liste
OriginalL'auteur David Homes | 2012-09-11
Vous devez vous connecter pour publier un commentaire.
Vous avez à s'échapper le caractère|, puisque c'est une regex métacaractère point de vue logique
Je voudrais donc utiliser
Note que Vous avez pour échapper à la barre oblique ainsi c'est pourquoi j'utilise
au lieu de
Pour échapper à cette métacaractère
merci @cHao. J'ai modifié en conséquence.
OriginalL'auteur gtgaxiola
OriginalL'auteur Clyde
Il semble que vous voulez quelque chose comme ceci:
Je sais que vous pouvez avoir plusieurs personnages dans votre délimiteur, et que vous pouvez exclure votre délimiteur de la chaîne de sortie.
Je ne pas savoir si l'exemple ci-dessus va travailler exactement pour votre scénario, vous pourriez avoir à expérimenter un peu (par exemple, "s'enfuir" regex "métacaractères" avec "\").
Voici la Javadoc de Modèle.compiler:
Et voici plus d'informations sur Java syntaxe regex:
OriginalL'auteur paulsm4
Vous devez vous échapper de votre
|
caractères:OriginalL'auteur Reimeus
Vous avez pour échapper à la '|' comme ceci \|
OriginalL'auteur srini.venigalla
Vous avez besoin pour échapper à la bars:
|
est un caractère spécial dans la regex.Utilisation:
Alternativement, vous pouvez utiliser
\Q\E
à la force que l'ensemble du motif être utilisé littéralement:C'est probablement le même schéma que vous aurez à partir de
Schéma.citation
.|
vous permet de spécifier les motifs facultatifs dans une regex. Votre regex est équivalent à|##
, ou: rien OU ##. Ceci divise autour de la chaîne vide, ou entre chaque caractère dans l'entrée.Voir le javadoc pour
Pattern
.OriginalL'auteur pb2q
Gilberto la solution fonctionne très bien dans ce cas, mais vous pourriez vouloir vérifier goyave. Il a beaucoup de utilitaire très pratique les classes, y compris une Chaîne de splitter. Avec elle, vous pouvez écrire:
OriginalL'auteur skiller3