Я пытаюсь разделить строку "1.1" до 2-х новых строк:String Java, сплит, пустой массив
String[] array = "1.1".split(".");
System.out.println(array[0]);
, но я получаю java.lang.ArrayIndexOutOfBoundsException
.
Почему?
Я пытаюсь разделить строку "1.1" до 2-х новых строк:String Java, сплит, пустой массив
String[] array = "1.1".split(".");
System.out.println(array[0]);
, но я получаю java.lang.ArrayIndexOutOfBoundsException
.
Почему?
split
принимает регулярное выражение. Символ точки .
используется, чтобы соответствовать любому символу в регулярных выражениях, поэтому массив будет пустым, если сам персонаж не спасся
String[] array = "1.1".split("\\.");
+1 для объяснения того, для чего используется символ точки (хотя он используется здесь случайно) – ifloop
Вам нужно избегать точки.
String[] array = "1.1".split("\\.");
System.out.println(array[0]);
Если посмотреть в doc вы обнаружите, что метод сплит принимает регулярное выражение.
В регулярных выражениях .
означает любой символ, кроме новой строки.
public String[] split(String regex) {
return split(regex, 0);
}
Вам нужно бежать . with \\
так, что она не воспринимается как регулярное выражение мета характер, как split принимает регулярное выражение. Вы можете попробовать так:
String[] array = "1.1".split("\\.");
System.out.println(array[0]);
попробовать String [] массив = "1,1" .split ("\\.");
вы должны использовать "1.1".split("\\.")
Это было предложено так много раз. Например, проверьте [this] (http://stackoverflow.com/questions/3387622/split-string-on-as-delimiter). – WonderCsabo
Fullstop - специальный символ в регулярном выражении. Поэтому используйте '' 1.1 ".split (" \\. ")'. – Omoro
Кстати, я предлагаю '' 1.1 ".split (Pattern.quote (". "))' Для этих случаев, чтобы улучшить удобочитаемость. – WonderCsabo