Разделить строку в Java для разделителя - PullRequest
4 голосов
/ 28 октября 2011

У меня вопрос, что я хочу разбить строку в Java с разделителем ^. И синтаксис, который я использую:

readBuf.split("^");

Но это не разбивает строку. Фактически это работает для всех других разделителей, но не для ^.

Ответы [ 4 ]

12 голосов
/ 28 октября 2011

split использует регулярные выражения (к сожалению, IMO).^ имеет специальное значение в регулярных выражениях, поэтому вам нужно его экранировать:

String[] bits = readBuf.split("\\^");

(Первая обратная косая черта необходима для экранирования Java. Фактическая строка - это просто одна обратная косая черта и символ каретки.)

В качестве альтернативы используйте Гуава и его Splitter класс.

2 голосов
/ 28 октября 2011

Используйте \\^.Потому что ^ - это специальный символ, обозначающий начало привязки строки.

String x = "a^b^c";
System.out.println(Arrays.toString(x.split("\\^"))); //prints [a,b,c]
0 голосов
/ 28 октября 2011

Вы также можете использовать это:

readBuf.split("\\u005E");

\ u005E - это шестнадцатеричный символ Unicode для «^», и вам необходимо добавить «\» для его выхода.

Все символы могут быть экранированы таким образом.

0 голосов
/ 28 октября 2011

Или вы можете использовать ... StringTokenizer вместо split
StringTokenizer st=new StringTokenizer(Your string,"^");<br> while(st.hasMoreElements()){<br> System.out.println(st.nextToken());<br> }

...