¿Cómo puedo eliminar el toda palabraon
(no la subcadenaon
en el Confirmed
) a partir de la siguiente cadena?palabra completa con Java
X-JP409 Confirmed on 13/2/12
¿Cómo puedo eliminar el toda palabraon
(no la subcadenaon
en el Confirmed
) a partir de la siguiente cadena?palabra completa con Java
X-JP409 Confirmed on 13/2/12
"X-JP409 Confirmed on 13/2/12".replace(" on ", " ");
El segundo argumento de replace() debe ser "", no solo "", porque hará que las dos palabras "Confirmado" y "13/2/12" sean una sola palabra. –
@ChandraSekhar ¡Buen punto! – adarshr
Esta respuesta responde técnicamente a la pregunta, pero solo funciona cuando la palabra objetivo está en el medio de la oración. Las respuestas a continuación (utilizando replaceall con RegEx) son mejores ya que ambas responden a la pregunta de una manera que es más universal/educativa en cuanto a cómo resolver generalmente los desafíos de reemplazo de palabras. –
¿Qué hay de:
String str = "X-JP409 Confirmed on 13/2/12";
str.replaceAll(" on ", " ");
La salida es lo que busca:
X-JP409 Confirmed 13/2/12
Hay marcador especial de la palabra en expresiones regulares: \b
. Entonces, la mejor forma es myString.replaceAll("\\bon\\b", "");
Esto funciona cuando la palabra 'on' está al principio, al final y en el centro del texto, pero solo si es una palabra separada. Por ejemplo, no eliminará "on" de la palabra "one".
No funciona, ¿es 'replace()' o 'replaceAll()'? –
+1 para utilizar la afirmación correcta para esta tarea, dejaré espacios en blanco superfluos en la cadena, pero para manejar esto correctamente se necesitarán algunos casos. – stema
@ 101010 [Documentación de cadena] (http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html) – stema
Si desea reemplazar todo el "en" que no están en una palabra, puede intentar hacer coincidir el límite de palabra \ b también. Espero eso ayude.
String abc = "on X-JP409 Confirmed on 13/2/12 on";
abc = abc.replaceAll("\\bon\\b", "");
System.out.println(abc);
o
String abc = "on X-JP409 Confirmed on 13/2/12 on";
abc = Pattern.compile("\\bon\\b").matcher(abc).replaceAll("");
replaceAll
es en realidad invocando la API Pattern
.
¡Gracias, me salvaste el día! – GingerHead
¡Eres el chico más genial de todos! – GingerHead
Si siempre va a ser ese formato, simplemente reemplaza '" on "' con '" "'? – Amber