Ersetzen von & amp; nbsp; von Javascript dom Textknoten
Ich bin Verarbeitung von xhtml mit javascript. Ich bin immer der Textinhalt für einen div-Knoten, die durch verketten der nodeValue alle untergeordneten Knoten, wo nodeType == Node.TEXT_NODE.
Die resultierende Zeichenfolge enthält manchmal ein non-breaking-space-Einheit. Wie Ersetze ich diese mit einem normalen Leerzeichen?
Mein div sieht so aus...
<div><b>Expires On</b> Sep 30, 2009 06:30 AM</div>
Die folgenden Vorschläge, die auf dem web gefunden habe nicht funktioniert:
var cleanText = text.replace(/^\xa0*([^\xa0]*)\xa0*$/g,"");
var cleanText = replaceHtmlEntities(text);
var replaceHtmlEntites = (function() {
var translate_re = /&(nbsp|amp|quot|lt|gt);/g;
var translate = {
"nbsp": " ",
"amp" : "&",
"quot": "\"",
"lt" : "<",
"gt" : ">"
};
return function(s) {
return ( s.replace(translate_re, function(match, entity) {
return translate[entity];
}) );
}
})();
Irgendwelche Vorschläge?
InformationsquelleAutor der Frage user158678 | 2009-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist viel einfacher als man macht es. Der text-Knoten wird nicht die Zeichenkette
" "
in es, es müssen die entsprechenden Zeichen mit dem code 160.UPDATE
Sogar noch einfacher:
InformationsquelleAutor der Antwort Tim Down
Wenn Sie nur ersetzen müssen
dann können Sie einen viel einfacher regex:var textWithNBSpaceReplaced = originalText.replace(/ /g, ' ');
Auch, es ist ein Tippfehler in den div-Beispiel, es sagt
&nnbsp;
statt
.InformationsquelleAutor der Antwort bobbymcr
Ich denkewenn Sie eine Funktion definieren, die mit "
var foo = function() {...};
", die Funktion ist nur definiert nachdie Linie. In anderen Worten, versuchen Sie dies:Bearbeiten: Auch, nur "
var
" das erste mal, wenn Sie eine variable deklarieren (Sie verwenden es, zweimal auf diecleanText
variable).Edit 2: Das problem ist die Schreibweise der den Namen der Funktion. Sie haben "var replaceHtmlEntites =". Es sollte "var replaceHtmlEntitätiches ="
InformationsquelleAutor der Antwort Kip
ich diese verwendet, und es funktionierte:
InformationsquelleAutor der Antwort mohamida
versuchen, diese.....dieser arbeitete für mich
InformationsquelleAutor der Antwort Amit Sharma
Die erste Zeile ist ziemlich Durcheinander. Es muss nur sein:
Werden sollte, dass alles, was Sie brauchen.
InformationsquelleAutor der Antwort brianary
Entfernt alles, was zwischen
&
und;
die alle solche Symbole haben. wenn Sie ragt möchten, um loszuwerden von Ihnen.InformationsquelleAutor der Antwort Andi Giga
für mich ersetzen funktioniert nicht...
versuchen Sie, diesen code:
InformationsquelleAutor der Antwort לבני מלכה