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.