2017-10-24 1 views
-1

eine Idee, wie das lästige Leerzeichen nach dem Apostroph und vor dem Punkt/Punkt zu entfernen, nachdem Regex mit match() angewendet wurde? Das Ergebnis sollte eine Zeichenfolge ohne "unnötige" Leerzeichen sein. Vielen Dank.JavaScript entfernen Leerzeichen nach dem Anwenden von Regex mit Übereinstimmung()

var text = "There’s no doubt these days."; 
var r = text.match(/\w+|[^'\s\w]+/g); 
var j = r.join(" "); 
console.log(j); 

// the result: There ’ s no doubt lives these days . 
// should be: There’s no doubt lives these days. 
+0

Stattdessen ersetzen Sie text.split (‘‚) verwenden könnte; – roland

+3

Es scheint ein X Y Problem zu sein. Was versuchst du zu machen? – Toto

+2

Es ist wirklich überraschend, wie das Wort "lebt" dort reinkommt. – trincot

Antwort

2

Verwendung String.prototype.replace():

var text = "There’s no doubt these days."; 
 
var r = text.match(/\w+|[^'\s\w]+/g); 
 
var j = r.join(" ") 
 
    .replace(" ’ ", "’") 
 
    .replace(" .", "."); 
 
console.log(j);

+0

Dank Shreevardhan, es funktioniert und es wird tun. Gibt es nicht mehr eine "für alle gelten" -Lösung? Vielen Dank. – user1627930

+0

@ user1627930 für eine ** für alle ** Lösung, müssen Sie den regulären Ausdruck neu schreiben, um alle möglichen Zeichen zu ignorieren, die nicht von Leerzeichen umgeben sein sollen, oder Ihren Anwendungsfall ausarbeiten. – Shreevardhan

+0

Ich habe versucht, es zu tun (um die Regex zu manipulieren), aber ich scheiterte. Ich habe kein Muster gefunden, das meine Bedürfnisse befriedigen würde. – user1627930

0

Ich nehme an, Sie wollen zwischen den Worten mehrere Räume, um loszuwerden, aber Interpunktion intakt lassen? Sie können entweder Ihre regex ändern:

var r = text.match(/\S+/g); 

Oder einfach mehrere Räume mit 1 mit .replace

var text = "There’s no doubt   these days."; 
text = text.replace(/\s+/g, " "); 

console.log(text); 
Verwandte Themen