separar por especiales espacio ejemplo cortar como caracteres caracter blanco java regex java-ee java-6

por - split java espacio en blanco



Split por first found String en Java (3)

¿Es posible decirle a String.split (función "(") que tiene que dividirse solo por la primera cadena encontrada "("?

Ejemplo:

String test = "A*B(A+B)+A*(A+B)"; test.split("(") should result to ["A*B" ,"A+B)+A*(A+B)"] test.split(")") should result to ["A*B(A+B" ,"+A*(A+B)"]


Pruebe con esta solución, es genérica, más rápida y más simple que usar una expresión regular:

public static String[] splitOnFirst(String str, char c) { int idx = str.indexOf(c); String head = str.substring(0, idx); String tail = str.substring(idx + 1); return new String[] { head, tail} ; }

Pruébalo así:

String test = "A*B(A+B)+A*(A+B)"; System.out.println(Arrays.toString(splitOnFirst(test, ''(''))); System.out.println(Arrays.toString(splitOnFirst(test, '')'')));


Si, absolutamente:

test.split("//(", 2);

Como la documentación para String.split(String,int) explica:

El parámetro de limit controla el número de veces que se aplica el patrón y, por lo tanto, afecta la longitud de la matriz resultante. Si el límite n es mayor que cero, entonces el patrón se aplicará a lo sumo n - 1 veces, la longitud de la matriz no será mayor que n , y la última entrada de la matriz contendrá todas las entradas más allá del último delimitador coincidente.


test.split("//(",2);

Ver javadoc para más información

EDITAR : corchete escapado, según el comentario de @ Pedro a continuación.