Entfernen von Nicht-Leerzeichen in Javascript

8

Ich habe Probleme, Leerzeichen aus einer Zeichenfolge zu entfernen. Zuerst konvertiere ich das div in text(); , um die Tags zu entfernen (was funktioniert) und dann versuche ich, den " &nbsp " Teil der Zeichenkette zu entfernen, aber es funktioniert nicht. Irgendeine Idee, was ich falsch mache. Danke.

%Vor%     
user2014429 23.10.2013, 18:25
quelle

2 Antworten

15

Wenn Sie die Funktion text verwenden, erhalten Sie nicht HTML, sondern Text: Die Entitäten   wurden in Leerzeichen geändert.

Ersetzen Sie einfach Leerzeichen:

%Vor%

Wenn Sie nur die Leerzeichen ersetzen möchten, die von   kommen, führen Sie vor der Konvertierung die Ersetzung durch:

%Vor%     
Denys Séguret 23.10.2013, 18:27
quelle
7

.text() / textContent enthalten keine HTML-Entitäten (z. B.   ), diese werden als Literalzeichen zurückgegeben. Hier ist ein regulärer Ausdruck, der die nicht-brechende Leerzeichen Unicode-Escapesequenz verwendet:

%Vor%

Demo

Es ist auch möglich, anstelle der Escape-Sequenz in Regex ein buchstabengetreues Leerzeichen zu verwenden, allerdings finde ich in diesem Fall die Escape-Sequenz klarer. Nichts, was ein Kommentar nicht lösen würde.

Es ist auch möglich, .html() / innerHTML zu verwenden, um das HTML, das HTML-Entitäten enthält, wie in der Antwort von @Dystroy abzurufen.

Unten ist meine ursprüngliche Antwort, wo ich den Anwendungsfall von OP falsch interpretiert habe. Ich lasse es hier für den Fall, dass jemand   vom Textinhalt der DOM-Elemente entfernen muss

[...] Beachten Sie jedoch, dass das Zurücksetzen von .html() / innerHTML eines Elements bedeutet, dass alle zugehörigen Listener und Daten gelöscht werden.

Also hier ist eine rekursive Lösung, die nur den Textinhalt von Textknoten ändert, ohne HTML oder irgendwelche Nebenwirkungen zu reparieren.

%Vor%

Demo

    
Fabrício Matté 23.10.2013 18:38
quelle

Tags und Links