2011-12-09 5 views
1

J'ai une chaîne, que je veux diviser en plusieurs parties en utilisant délimiteur}}, { »J'ai essayé d'utiliser:Java - string split avec séparateur spécial

String delims="['}},{\"']+"; 
String field[]=new String[50]; 
field=subResult.split(delims); 

Mais il ne fonctionne pas :-(savez-vous, quelle expression dans delims dois-je utiliser?

Merci pour vos réponses

+0

Avez-vous besoin des guillemets '' "dans le delimiter? –

Répondre

2

Si le délimiteur est tout simplement }},{ alors subResult.split("\\}\\},\\{") devrait fonctionner

String fooo = "asdf}},{bar}},{baz"; 
System.out.println(Arrays.toString(fooo.split("\\}\\},\\{"))); 
1

Vous devriez lui échapper.

String.split("\\}\\},\\{"); 
3

A { est un méta-caractère regex qui marque le début d'une classe de caractères. Pour correspondre à un { vous devez échapper en faisant précéder littérale avec un \\ comme:

String delims="}},\\{"; 
String field[] = subResult.split(delims); 

Vous devez échapper à pas } dans votre regex comme moteur de regex infère qu'il est un } littéral comme il est pas précédé par une ouverture {. Cela dit, il n'y a pas de mal à l'éviter.

See it

1

Vous pourriez faire plus complexe que vous avez besoin.

String text = "{{aaa}},{\"hello\"}"; 
String[] field=text.split("\\}\\},\\{\""); 
System.out.println(Arrays.toString(field)); 
0

Utilisation:

Pattern p = Pattern.compile("[}},{\"]");        
// Split input with the pattern 
String[] result = p.split(MyTextString);