2013-02-14 6 views
0

Я пытаюсь разбить строку, используя разделитель, и получаю некоторые нечетные результаты, когда я беру значения из разных ячеек в массиве String. Пример:Странное поведение при разбиении строки

dataString = (String) hashMap.get("LCSSAMPLEREQUEST_sampleRequestString"); 

System.out.println(dataString); 

String dataStringSplit[] = dataString.split("quantity|&^&|"); 

String tempString = dataStringSplit[0]; 

Вот строка в dataString перед первым разделителем:

"sortingNumber|&^&|1|-()-|ID|&^&|1|-()-|DROPPED|&^&|false|-()-|" 

Теперь, когда я делаю System.out из 'tempString', я получаю строку без значения.

Если у меня tempString = dataStringSplit[1], то я получаю значение 'sor'.

Что я здесь делаю неправильно?

+0

Было бы намного проще помочь вам, если бы вы просто написали короткую, но полную программу, демонстрирующую проблему. Например, тот факт, что вы получаете его из хэш-карты, не имеет значения. Я сильно подозреваю, что проблема 'split' работает с регулярным выражением - проблема ... –

ответ

1

"quantity|&^&|" должно быть "quantity\\|&\\^&\\|". | и ^ являются метасимволом в регулярном выражении. для того, чтобы рассматривать его как нормальный символ, вам следует избегать его обратным слэшем

+0

@jlordo. Потому что им не нужно бежать в Regex. –

+0

Где мой ум ??? Но шляпу, начинающуюся с линии, следует избегать. – jlordo

+0

@jlordo '<([{\^- = $! |}})? * +.>' Являются метасимволами .. :) – PermGenError

Смежные вопросы