2016-11-11 1 views
0

Ich versuche, den richtigen Weg, um herauszufinden, alle Interpunktion und white-space aus einer Zeichenfolge zu entfernen, aber Apostrophe intakt, so zum Beispiel lassen:wie alle Interpunktion aus einer Zeichenfolge zu entfernen, mit Ausnahme von Apostroph

won‘ t würde bleiben nicht aber „Wunsch.“ würde sich in „Wunsch

ich habe mit replaceAll("[\\W]", ""), replaceAll("/\\p{P}(?<!')/", ""), and replaceAll("[^a-zA-Z]", "") versucht, aber sie alle verlassen die Zeichensetzung völlig intakt

+1

'aber sie lassen die Interpunktion völlig intakt 'Ordnen Sie die Stringvariable neu zu? [Strings sind unveränderlich] (http://stackoverflow.com/questions/15450519/why-does-string-replace-not-work), daher müssen Sie die Zeichenfolge jedes Mal neu zuweisen, wenn Sie 'replaceAll' aufrufen. – BackSlash

+0

Versuchen Sie 's = s.replaceAll (" [\\ p {P} && [^ ']] "," ")' –

+0

's = s.replaceAll (" [^ a-zA-Z \'] ", ""); ' – rafid059

Antwort

0
String s = "don't."; 
s = s.replaceAll("(')|(\\W)", "$1"); 
+0

Die' \ w'-Zeichenklasse enthält die Unterstrichklasse. Daher funktioniert [Ihre Lösung nicht] (http://ideone.com/0u811d). – BackSlash

+0

@BackSlash Der Benutzer hat nichts in Bezug auf den Unterstrich erwähnt. Er sagte, er möchte Interpunktion und Leerzeichen entfernen, die beide in der Klasse \ W enthalten sind. –

+0

[Hier] (https://en.wikipedia.org/wiki/Punctuation) Underscore ist als Satzzeichen in der allgemeinen Typografie aufgeführt. Außerdem versuchte das OP, '\ p {P}' in seiner Regex zu finden, und [dieses Muster enthält Unterstriche] (http://ideone.com/h9eLlY). – BackSlash

Verwandte Themen