Usted puede hacer esto:
String str = "123dance456";
String substr = "dance";
String before = str.substring(0, str.indexOf(substr));
String after = str.substring(str.indexOf(substr) + substr.length());
O
String str = "123dance456";
String substr = "dance";
String[] parts = str.split(substr);
String before = parts[0];
String after = parts[1];
Es de destacar que la segunda respuesta no funcionar si tenemos más de una ocurrencia de la subcadena. A tal fin, si sólo queremos el primero en ser reconocido, que sería más seguro para llamar dividida con un límite:
String[] parts = str.split(substr, 2);
que asegura que la matriz devuelta tiene como máximo dos elementos. Además, dado que split
interpretará su entrada como una expresión regular, debemos tener cuidado con la sintaxis de expresiones regulares no válidas. Como tal, prefiero la primera solución, ya que funciona independientemente de la composición de la subcadena original.
Para hacer la primera respuesta más eficiente - ya que es mi respuesta preferida - entonces, tendríamos que recordar la posición de la subcadena:
final int position = str.indexOf(substr);
if (position >= 0) {
//if the substring does occur within the string, set the values accordingly
before = str.substring(0, position);
after = str.substring(position + substr.length());
} else {
//otherwise, default to the empty string (or some other value)
before = "";
after = "";
}
Siempre vale la pena prestar atención a estos pequeños cajas de borde.
Se puede hacer, pero ¿cuál es el formato exacto ??? Quiero decir, ¿la danza va a estar ahí siempre? –
@ dku.rajkumar: Sí, la subcadena "dance" siempre estará allí. 'split()' debería hacer el truco. Debería haber imaginado un método como este ya. Pensé que podría tener que escribir una expresión regular para eso.Gracias :) – skip
entonces no hay necesidad de expresiones regulares, simplemente haga uso de String [] str =; string.split ("dance"); como se menciona respuestas –