2017-01-20 4 views
-2

Ich habe eine Zeichenfolge mit mehreren Leerzeichen zwischen Wörtern und ich möchte alle Leerzeichen auf nur eins reduzieren.Und nach dem Löschen der Leerzeichen vor und nach [',', '. ','? ','! '] und lass einen Raum nach', '. Können Sie mir mit einem Code helfen?Javascript String ersetzen Leerzeichen vor und nach mehreren Selektoren

+0

Also im Grunde: "Wie entferne ich Leerzeichen aus einem String?" –

+0

Mögliches Duplikat von [So ersetzen Sie alle Vorkommen einer Zeichenfolge in JavaScript?] (Http://stackoverflow.com/questions/1144783/how-to-replace-all-occurrrences-of-a-string-in-javascript) –

+0

@StephanBijzitter: Nun, gemäß der aktuellen Frageversion ist es nicht. –

Antwort

1

Ihr Ansatz funktioniert nicht, weil Sie nur den ersten Platz in Ihrem newSeparators entkommen, während . und ? spezielle Regex Metazeichen bleiben und /\ . / regex entspricht einen Raum, alle Zeichen, ein Leerzeichen und /\ ? / wird einen optionalen Raum passen und 1 Platz nach.

Ich schlage vor, mit:

/\s*([.!:?])\s*|\s*(,)\s*/g 

die regex demo See.

Einzelheiten:

  • \s* - 0+ Whitespaces
  • ([.!:?]) - Gruppe 1 Erfassung ., !, : oder ?
  • \s* - 0+ Whitespaces
  • | - oder
  • \s*(,)\s* - ein , zwischen 0+ Whitespaces in Gruppe erfasst 2.

var newSeparators = /\s*([.!:?])\s*|\s*(,)\s*/g; 
 
var data = "word, word . word ! word ? word"; 
 
data = data.replace(newSeparators, function($0, $1, $2) { 
 
    return $2 ? $2 + " " : " " + $1 + " "; 
 
}); 
 
console.log(data);

+0

Ja danke, aber ich habe noch ein Problem. Die Daten, die ich formatieren möchte, sind ein langer Text und ist nicht die ganze Zeit von diesem Typ: Wort, Wort. Wort! Wort? Wort. Manchmal habe ich: Wort, Wort und ich will nur einen Leerraum zwischen Trennzeichen haben. Der Code wird Wort, Wort (mit 2 Leerzeichen nach Komma) –

+0

Ja, und was ist das Problem? Veröffentlichen Sie den Text und erklären Sie, was sich von Ihrer Beispieleingabe unterscheidet. Es ist nicht klar, was du meinst, sorry. Im Moment behebt diese Lösung das Problem im ursprünglichen Post. –

+0

Bitte aktualisieren Sie die Frage –

Verwandte Themen