2013-12-05 5 views
0

Просто быстрый вопроса:Использование split() с "|" символьные

String input = "sam|y|rutgers"; 
String[] splitInput = input.split("|"); 
System.out.println(Arrays.toString(splitInput)); 

Output: 
[, s, a, m, |, y, |, r, u, t, g, e, r, s] 

Я хотел бы разделить на персонажах трубы, чтобы получить [Сэм, у, Рутгерс]

Любая идея, что я делаю неправильно здесь?

+5

"|" является специальным регулярным выражением. Используйте 'String [] splitInput = input.split (" \\ | ");' –

+1

Пожалуйста, прочтите javadoc методов, которые вы используете. –

+0

http://stackoverflow.com/questions/9808689/why-does-string-split-need-pipe-delimiter-to-be-escaped –

ответ

8

Попробуйте с одним из этих

  • split("\\|")
  • split("[|]")
  • split(Pattern.quote("|"))
  • split("\\Q|\\E")

split метод использует регулярное выражение в качестве параметра и в регулярных выражениях | средств или так ваш Curre nt выражение пустая строка или пустая строка.

Если вы хотите сделать простой текст, вам необходимо его избежать. Для этого вы можете

  • место \ перед ним в регулярных выражениях, которые в строках будут записаны в "\\|".
  • использование символов класс [...] избежать большинства регулярных выражений метасимволов как split("[|]")
  • или окружать свои специальные символы с \\Q и \\E, который сделает каждый символ (независимо, если это специальное или нет) просто буквальный. Это решение используется в Pattern.quote("regex").
+0

отлично, спасибо – user2812890

+0

@ user2812890 Нет проблем :) – Pshemo

1

Вы можете попробовать это:

String[] str= input.split("\\|"); 

"|" специальный символ (OR), поэтому вам нужно бежать, что с помощью slash \\. Как указано hereUnescaped | анализируется как регулярное выражение значения «пустая строка или пустая строка,»

+1

отлично, спасибо – user2812890

+0

@ user2812890: - Добро пожаловать !!! –

1

Вы можете сделать это StringTokenizer

StringTokenizer st2 = new StringTokenizer(input , "|"); 

    while (st2.hasMoreElements()) { 
     System.out.println(st2.nextElement()); 
    } 

по умолчанию разделители является " " пространство.

StringTokenizer st2 = new StringTokenizer(input);//it will split you String by `" "` space 
1

\ Q & \ E являются кавычками регулярных выражений.

String[] splitInput = input.split("\\Q|\\E"); 
Смежные вопросы