Verwenden Sie [\W+]
oder "[^a-zA-Z0-9]"
als Regex, um alle Sonderzeichen zu finden, und verwenden Sie String.replaceAll (regex, String), um den Splitter durch eine leere Zeichenfolge zu ersetzen. Denken Sie daran, dass das erste Argument von String.replaceAll eine Regex ist, müssen Sie es mit einem umgekehrten Schrägstrich zurückhalten, um em als Literalzeichen zu behandeln.
Sie können die Zeilen lesen und auf diese Weise alle Sonderzeichen sicher ersetzen.
Beachten Sie, dass Sie bei Verwendung von \W
keine Unterstriche ersetzen.
Ihr Problem besteht darin, dass die von match.start()
zurückgegebenen Indizes der Position des Zeichens entsprechen, wie es in der ursprünglichen Zeichenfolge angezeigt wurde, als Sie es gefunden haben. Da Sie die Zeichenfolge c
jedoch jedes Mal neu schreiben, werden diese Indizes falsch.
Der beste Lösungsansatz ist die Verwendung von replaceAll
, zum Beispiel: