2011-11-13 8 views
5

Ho bisogno di rimuovere la punteggiatura seguendo una parola. Ad esempio, è necessario modificare word?! in word e string: in string.Come rimuovere tutti i segni di punteggiatura che seguono una singola parola in Java?

Modifica: l'algoritmo deve rimuovere solo la punteggiatura alla fine della stringa. La punteggiatura all'interno dello String dovrebbe rimanere. Ad esempio, doesn't; dovrebbe diventare doesn't.

+0

I segni di punteggiatura possono essere visualizzati in altre posizioni valide? Dite, se avete una parola ": test", quel segno rimane o viene sostituito? Fondamentalmente, stai rimuovendo tutti i segni o solo alla fine delle parole? – Bryan

risposta

2

È possibile utilizzare una regex per modificare la stringa.

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

ci sono "parole", che io sappia dove ' è alla fine ed è usato come punteggiatura. Quindi questa regex funzionerà per te.

+0

L'espressione può essere semplificata se la stringa contiene una singola parola e l'intento è di rimuovere * caratteri di punteggiatura * trailing * - l'OP non ha chiarito, tuttavia ... – bobbymcr

+0

bobbymcr Intendevo rimuovere solo i segni di punteggiatura finali. In che modo l'espressione può essere semplificata in questo caso? – user1044680

+0

Funziona, grazie. – user1044680

5

Utilizzare il metodo replaceAll(...) che accetta un'espressione regolare.

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