separar - split java ejemplo
El método split() en Java no funciona en un punto(.) (7)
Esta pregunta ya tiene una respuesta aquí:
He preparado un fragmento de código simple para separar la parte errónea de mi aplicación web.
public class Main {
public static void main(String[] args) throws IOException {
System.out.print("/nEnter a string:->");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String temp = br.readLine();
String words[] = temp.split(".");
for (int i = 0; i < words.length; i++) {
System.out.println(words[i] + "/n");
}
}
}
Lo he probado mientras construía una aplicación web JSF. Solo quiero saber por qué en el código anterior temp.split(".")
No funciona. La declaración,
System.out.println(words[i]+"/n");
no muestra nada en la consola significa que no pasa por el bucle. Cuando cambio el argumento del método temp.split()
a otros caracteres, funciona bien como siempre. ¿Cuál podría ser el problema?
El método toma una expresión regular, no una cadena, y el punto tiene un significado especial en las expresiones regulares. Escápelo como tan split("//.")
. Necesitas una doble barra invertida, la segunda escapa la primera.
Funciona bien. ¿Leíste java.lang.String.split ? La cadena se convierte a una expresión regular.
.
es el caracter especial que coincide con todos los caracteres de entrada.
Al igual que con cualquier personaje especial de expresión regular, puedes escapar con un /
. Necesita un /
adicional para el escape de cadena de Java.
La java.lang.String.split dice:
Divide esta cadena alrededor de las coincidencias de la expresión regular dada.
(Énfasis mío)
Un punto es un carácter especial en la sintaxis de expresiones regulares. Use Pattern.quote()
en el parámetro para dividir () si desea que la división esté en un patrón de cadena literal:
String[] words = temp.split(Pattern.quote("."));
Tratar:
String words[]=temp.split("//.");
El método es:
String[] split(String regex)
"." es un char reservado en regex
java.lang.String.split
divide en expresiones regulares, y .
en una expresión regular significa "cualquier personaje".
Pruebe temp.split("//.")
.
//.
es la respuesta simple. Aquí hay un código simple para su ayuda.
while (line != null) {
//
String[] words = line.split("//.");
wr = "";
mean = "";
if (words.length > 2) {
wr = words[0] + words[1];
mean = words[2];
} else {
wr = words[0];
mean = words[1];
}
}
private String temp = "mahesh.hiren.darshan";
String s_temp[] = temp.split("[.]");
Log.e("1", ""+s_temp[0]);