Java - разделенная строка со специальным разделителем - PullRequest
1 голос
/ 09 декабря 2011

У меня есть строка, которую я хочу разделить на части с помощью делиметра}}, {". Я пытался использовать:

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

Но это не работает :-( знаете, чтовыражение в разделителях я должен использовать?

Спасибо за ваши ответы

Ответы [ 5 ]

3 голосов
/ 09 декабря 2011

A { - это метасимвол регулярного выражения, который отмечает начало класса символов.Чтобы соответствовать буквальному символу {, вам необходимо экранировать его, поставив перед ним \\ в виде:

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

Вам не нужно экранировать } в своем регулярном выражении, так как механизм регулярных выражений делает вывод, что этолитерал }, так как ему не предшествует открытие {.Тем не менее, избежать этого не повредит.

Посмотри на это

2 голосов
/ 09 декабря 2011

Если разделитель просто }},{, тогда subResult.split("\\}\\},\\{") должен работать

String fooo = "asdf}},{bar}},{baz";
System.out.println(Arrays.toString(fooo.split("\\}\\},\\{")));
1 голос
/ 09 декабря 2011

Вы могли бы сделать это более сложным, чем вам нужно.

String text = "{{aaa}},{\"hello\"}";
String[] field=text.split("\\}\\},\\{\"");
System.out.println(Arrays.toString(field));
1 голос
/ 09 декабря 2011

Вы должны убежать от него.

String.split("\\}\\},\\{");
0 голосов
/ 09 декабря 2011

Использование:

Pattern p = Pattern.compile("[}},{\"]");        
// Split input with the pattern
String[] result = p.split(MyTextString);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...