Entfernen Sie ALLE Leerzeichen aus dem Text

587
$("#topNav" + $("#breadCrumb2nd").text().replace(" ", "")).addClass("current");

Dies ist ein Ausschnitt aus meinem Code. Ich möchte einer ID eine Klasse hinzufügen, nachdem ich die Texteigenschaft einer anderen ID erhalten habe. Das Problem dabei ist, dass die ID mit dem benötigten Text Lücken zwischen den Buchstaben enthält.

Ich möchte, dass die Leerzeichen entfernt werden. Ich habe es versucht TRIM()und REPLACE()aber das funktioniert nur teilweise. Das REPLACE()einzige entfernt das 1. Leerzeichen.

Cecil Theodore
quelle

Antworten:

1347

Sie müssen replace () mitteilen, um den regulären Ausdruck zu wiederholen:

.replace(/ /g,'')

Das Zeichen g bedeutet, die Suche durch die gesamte Zeichenfolge zu wiederholen. Lesen Sie mehr über diese und andere RegEx Modifikatoren in JavaScript hier .

Wenn Sie alle Leerzeichen und nicht nur das wörtliche Leerzeichen abgleichen möchten, verwenden Sie \sstattdessen:

.replace(/\s/g,'')
Schwach
quelle
30
Coffeescript wird sich aus irgendeinem gottesfürchtigen Grund über diese Regex beschweren. Stattdessen musste ich weitermachen und verwenden, .replace(/\s+/g, '')was für mich völlig in Ordnung ist.
Dan Bradbury
7
Wenn Sie so etwas wie die string.strip-Methode von ruby ​​implementieren möchten, die eine Kopie der Zeichenfolge zurückgibt, wobei führende und nachfolgende Leerzeichen entfernt wurden, sollte dies funktionieren: x = " Many spaces before and after " y = x.replace(/(^\s+|\s+$)/g, "") Das ^\sbedeutet Leerzeichen nach dem Anfang der Zeichenfolge, \s$bedeutet Leerzeichen am Ende der Zeichenfolge, die |für entweder / oder in der Gruppe steht, und der gModifikator wird in den obigen Kommentaren erläutert. Sie benötigen außerdem +nach jedem Quantifizierer \s, um eine oder mehrere Instanzen von Leerzeichen zu erfassen.
Garrett Simpson
299
.replace(/\s+/, "") 

Ersetzt nur das erste Leerzeichen , einschließlich Leerzeichen, Tabulatoren und neuer Zeilen.

Um alle Leerzeichen in der Zeichenfolge zu ersetzen, müssen Sie den globalen Modus verwenden

.replace(/\s/g, "")
Pantelis
quelle
11
Der erste entfernt nicht alle Leerzeichen (er entfernt nur die erste Gruppe von Leerzeichen / neuen Zeilen / Registerkarten), der zweite ist in Ordnung. Demo: regex101.com/r/wX8rF2/3
4
.replace (/ \ s + / g, '')
mynameistechno
@mynameistechno Das +fügt nichts hinzu, da wir bereits den g(globalen) Modifikator verwenden
d4nyll
Die erste Zeile funktionierte nicht, da nachgestellte Leerzeichen nicht aus dem Text entfernt wurden
UKDataGeek
@ d4nyll Es könnte es effizienter machen.
Solomon Ucko
5

Die Verwendung String.prototype.replacemit Regex, wie in den anderen Antworten erwähnt, ist sicherlich die beste Lösung.

Aber nur zum Spaß können Sie auch alle Leerzeichen aus einem Text entfernen, indem Sie String.prototype.splitund verwenden String.prototype.join:

const text = ' a b    c d e   f g   ';
const newText = text.split(/\s/).join('');

console.log(newText); // prints abcdefg

Alberto Trindade Tavares
quelle