2014-04-04 3 views
-1

Я пытаюсь разделить строку "1.1" до 2-х новых строк:String Java, сплит, пустой массив

String[] array = "1.1".split("."); 
System.out.println(array[0]); 

, но я получаю java.lang.ArrayIndexOutOfBoundsException.

Почему?

+3

Это было предложено так много раз. Например, проверьте [this] (http://stackoverflow.com/questions/3387622/split-string-on-as-delimiter). – WonderCsabo

+0

Fullstop - специальный символ в регулярном выражении. Поэтому используйте '' 1.1 ".split (" \\. ")'. – Omoro

+0

Кстати, я предлагаю '' 1.1 ".split (Pattern.quote (". "))' Для этих случаев, чтобы улучшить удобочитаемость. – WonderCsabo

ответ

6

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

String[] array = "1.1".split("\\."); 
+2

+1 для объяснения того, для чего используется символ точки (хотя он используется здесь случайно) – ifloop

1

Вам нужно избегать точки.

String[] array = "1.1".split("\\."); 
System.out.println(array[0]); 

Если посмотреть в doc вы обнаружите, что метод сплит принимает регулярное выражение.

В регулярных выражениях . означает любой символ, кроме новой строки.

public String[] split(String regex) { 
     return split(regex, 0); 
    } 
1

Вам нужно бежать . with \\ так, что она не воспринимается как регулярное выражение мета характер, как split принимает регулярное выражение. Вы можете попробовать так:

String[] array = "1.1".split("\\."); 
System.out.println(array[0]); 
1

вы должны использовать "1.1".split("\\.")

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