public class test { public static void main(String[] args) { String[] arr = {"0 1.2.3.4","a bcde"}; System.out.println(arr[0].split(".")[2]); } }Estoy usando java 8.
la salida esperada es 3 .
El argumento para split es una expresión regular , no un literal 'esta es la cadena que debe buscar'. el . el símbolo en expresiones regulares significa 'cualquier cosa', por lo que es como " ".split(" ") - la cadena que está pasando son todos los separadores, por lo tanto, no obtiene ningún resultado.
.split(Pattern.quote(".")) se encargará de ello.
EDITAR: para entrar en detalle, dado que la cadena consta de todos los separadores, la división inicialmente le proporciona una matriz llena de cadenas vacías; uno para cada posición 'entre' cualquier carácter (ya que cada carácter es un separador). Sin embargo, por defecto, la split eliminará todas las cadenas vacías del final, por lo que terminará con una matriz de cadenas de longitud 0.