2014-01-26 2 views
1

Очевидно, я теряю сознание. У меня есть следующая строка:Простая строка Сплит

Tuesday|6:00 pm|Sub 10:00|Name

Я хочу, чтобы разделить, что на 4 маркеров с помощью «|» как разделитель. Легко, правда?

String myString = "Tuesday|6:00 pm|Sub 10:00|Name"; 
System.err.println(myString); 
String[] tokens = myString.split("|");  
for (int i=0; i<4; i++) System.err.println(tokens[i]); 

А вот мой выход: Tuesday|6:00 pm|Sub 10:00|Name T u e

Что мне не хватает? (я думаю, это будет один из тех моментов «Дох!»). Спасибо!

+0

Это происходит все время. Тот, кто был «гением» в SUN, который придумал идею, что «split» и «replaceAll» должны принимать «регулярное выражение», он ошибался. – dasblinkenlight

+0

@dasblinkenlight: Наличие такого метода в порядке, но именование очень вводит в заблуждение. Давайте забудем об этом и воспользуемся [Splitter] Guava (http://docs.guava-libraries.googlecode.com/git-history/release/javadoc/com/google/common/base/Splitter.html). – maaartinus

ответ

4

split принимает регулярное выражение в качестве аргумента. Символ трубы | является метасимволом в регулярных выражениях, обозначающих OR. Он должен быть экранированы

String[] tokens = myString.split("\\|");  

иначе String разделяется на отдельные символы

+0

Спасибо! Я этого не знал. Я соглашусь, как только SO отпустит меня. – Alex