javascript regex ersetzen, html chars
Bin ich mit JavaScript den Wert eines Eingangs mit text enthalten, HTML-spezifische chars solchen &
etc. Also, ich bin versuchen zu finden, eine regex zu entsprechen, wird diese Werte und ersetzen Sie Sie mit dem entsprechenden Wert ("&", " ") entsprechend, nur ich kann nicht herausfinden, die regex zu tun.
Hier ist mein Versuch:
Machen ein Objekt, das enthält die Spiele und Verweis auf die Ersatz-Wert:
var specialChars = {
" " : " ",
"&" : "&",
">" : ">",
"&lt;" : "<"
}
Dann will ich an meinem string
var stringToMatch = "This string has special chars &amp; and &nbsp;"
Habe ich versucht, etwas wie
stringToMatch.replace(/(&nbsp;|&)/g,specialChars["$1"]);
aber es funktioniert nicht. Ich weiß nicht wirklich verstehen, wie Sie fangen den besonderen tag und ersetzen Sie es. Jede Hilfe wird sehr geschätzt.
Vielleicht "&nbsp;" zeigen Sie Ihren ?
Warum nicht Flucht? w3schools.com/jsref/jsref_escape.asp
Flucht drehen würde, & in %26amp%3B. Definitiv nicht das, was ich"m suchen
Warum nicht Flucht? w3schools.com/jsref/jsref_escape.asp
Flucht drehen würde, & in %26amp%3B. Definitiv nicht das, was ich"m suchen
InformationsquelleAutor brad | 2009-08-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie können die Funktionen verwenden, die aus einer Frage auf ein etwas anderes Thema (Effizient ersetzen alle Sonderzeichen in einem string?).
Jason Bunting Antwort hat einige nette Ideen + die notwendige Erklärung, hier ist seine Lösung mit einigen änderungen, um Sie zu erhalten begann (wenn Sie finden diese hilfreich, upvote seine original-Antwort so gut, wie das ist, seinen code, im wesentlichen).
callable als
Nummeriert entites sind noch einfacher, können Sie ersetzen Sie Sie viel mehr generisch mit ein wenig Mathematik und
- String.fromCharCode()
.Andere, viel einfachere Möglichkeit wäre, wie das (funktioniert in jedem browser)
Die Antwort wurde geändert, ein bisschen, um Platz für diese. Ich denke mal du hast versucht mit der original-code. Die oben genannten arbeiten für mich, ich habe einfach versucht, es (wieder).
Wirklich? Nein, ich kopierte den code und lief es über den debugger ist der Wert für mich weitergegeben werden (s) war das ganze . Sehr seltsam. Ich bin mit safari und getestet habe ich in Firefox. Ich werde versuchen ein paar andere Browser auch. Jedenfalls nochmals vielen Dank
Sorry, ich habe gerade bemerkt die änderungen. Die zusätzliche Entität attr return-Funktion. Thx wieder!!!!
InformationsquelleAutor Tomalak
Andere Möglichkeit wäre die Schaffung eines div-Objekt
Dann die Zuordnung der text auf seine innerHTML
Und schließlich Lesen das element text Inhalt
Und dort gehen Sie...
Okay ich habe den Punkt. Wenn Sie das tun, was ich vorgeschlagen habe, sind alle Werte umgewandelt, die von der HTML-engine des Browsers, da die "textContent" oder "innerText" - Eigenschaft enthält die "daraus resultierende text".
InformationsquelleAutor BYK
Können Sie eine Funktion verwenden, basierend Ersatz zu tun, was Sie tun möchten:
Aber, ich fordere Sie auf, betrachten Sie Ihre situation. Wenn Sie erhalten, © und andere HTML-Entitäten in Ihre text-Werte, tun Sie wirklich wollen, Sie zu ersetzen? Sollten Sie umwandeln, die Sie danach?
Nur etwas im Auge zu behalten.
Prost!
Ich bin nicht für die Punkte. Ich bin in ihm für die Fragen. Aber danke für die Stimmung. 🙂 Es gibt auch die Tatsache, dass standardmäßig der Fall sein sollte return e; nicht einwickeln. Fest über.
InformationsquelleAutor coderjoe
Eine moderne Variante, die nicht schmerzhaft switch/case-Anweisungen:
Oder, da diese wirklich sein sollte, verwandelte sich in eine Funktion:
(Diese Liste der Zeichen wird ausgewählt basierend auf der Liste von XML-escape-char-codes verfügbar auf wikipedia.)
InformationsquelleAutor Kyle Baker
einem viel besseren Ansatz für das ersetzen von HTML-tags & HTML-Sonderzeichen wäre, nur ersetzen Sie diese mit REGEX
InformationsquelleAutor Alberto