2012-02-16 21 views
9

¿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 
+1

Si siempre va a ser ese formato, simplemente reemplaza '" on "' con '" "'? – Amber

Respuesta

3
"X-JP409 Confirmed on 13/2/12".replace(" on ", " "); 

String replace documentation

+0

El segundo argumento de replace() debe ser "", no solo "", porque hará que las dos palabras "Confirmado" y "13/2/12" sean una sola palabra. –

+0

@ChandraSekhar ¡Buen punto! – adarshr

+0

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. –

0

¿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 
6

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".

+1

No funciona, ¿es 'replace()' o 'replaceAll()'? –

+0

+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

+0

@ 101010 [Documentación de cadena] (http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html) – stema

5

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.

+0

¡Gracias, me salvaste el día! – GingerHead

+0

¡Eres el chico más genial de todos! – GingerHead

Cuestiones relacionadas