2011-11-13 11 views
5

Necesito eliminar la puntuación después de una palabra. Por ejemplo, word?! debe cambiarse a word y string: debe cambiarse a string.¿Cómo elimino toda la puntuación que sigue a una sola palabra en Java?

Editar: El algoritmo solo debe eliminar la puntuación al final de la cadena. Cualquier puntuación dentro de la cadena debe permanecer. Por ejemplo, doesn't; debe convertirse en doesn't.

+0

¿Pueden los signos de puntuación aparecer en otras posiciones que son válidas? Diga, si tiene una palabra ": prueba", ¿esa marca se queda o es reemplazada? Básicamente, ¿estás eliminando todas las marcas o solo al final de las palabras? – Bryan

Respuesta

2

Puede usar una expresión regular para modificar la cadena.

String resultString = subjectString.replaceAll("([a-z]+)[?:!.,;]*", "$1"); 

No hay "palabras" que yo sepa donde ' es al final y se utiliza como una puntuacion. Entonces esta expresión regular funcionará para ti.

+0

La expresión se puede simplificar si la cadena contiene una sola palabra y la intención es eliminar * caracteres de puntuación * finales *; sin embargo, el OP no aclaraba ... – bobbymcr

+0

bobbymcr Tenía la intención de eliminar solo los signos de puntuación finales. ¿Cómo se puede simplificar la expresión en este caso? – user1044680

+0

Eso funciona, gracias. – user1044680

5

Utilice el método replaceAll(...) que acepta una expresión regular.

String s = "don't. do' that! "; 
s = s.replaceAll("(\\w+)\\p{Punct}(\\s|$)", "$1$2"); 
System.out.println(s); 
Cuestiones relacionadas