Ersetzen mehrere Zeichen in einer Zeichenfolge in javascript
Habe ich diese schönen code, die ich habe keine Ahnung warum nicht funktioniert. Es sollte den Wert einer text-Eingabe und ersetzt jedes nationale Sonderzeichen mit HTML-code, um die Kompatibilität Zwecke. Aber, wenn ich auf die Schaltfläche klicke, die Funktion gibt den string zurück, ohne irgendwelche änderungen.
Irgendeine Idee?
(jsfiddle)
<a id="reminder1" onclick="document.getElementById('reminder2').style.display = ''; document.getElementById('reminder1').style.display = 'none';">
Set reminder
</a>
<a id="reminder2" class="reminder" style="display:none;">
<input type="text" id="reminderh" size=40 style="font-size:20px;">
<input type="button" value="Set" onclick="csere(document.getElementById('reminderh').value);">
</a>
<script>
function csere(qwe){
document.getElementById('reminder2').style.display = 'none';
var rtz0 = qwe.replace("á","á");
var rtz1 = rtz0.replace("Á","Á");
var rtz2 = rtz1.replace("é","é");
var rtz3 = rtz2.replace("É","É");
var rtz4 = rtz3.replace("í","í");
var rtz5 = rtz4.replace("Í","Í");
var rtz6 = rtz5.replace("ö","ö");
var rtz7 = rtz6.replace("Ö","Ö");
var rtz8 = rtz7.replace("ő","&ő");
var rtz9 = rtz8.replace("Ő","Ő");
var rtz10 = rtz9.replace("ó","ó");
var rtz11 = rtz10.replace("Ó","Ó");
var rtz12 = rtz11.replace("ü","ü");
var rtz13 = rtz12.replace("Ü","Ü");
var rtz14 = rtz13.replace("ű","ű");
var rtz15 = rtz14.replace("Ű","Ű");
var rtz16 = rtz15.replace("ú","ú");
var uio = rtz16.replace("Ú","Ú");
//Creates a cookie with the final value (different function)
createCookie('reminder',uio,1500);
document.getElementById('reminder1').style.display = '';
}
</script>
Funktioniert bei mir (ich habe
Ihnen nie vergeben Sie den Wert zurück auf das element, nachdem Sie alle ersetzt.
Stellt sich heraus, ich war nicht wirklich in der Notwendigkeit der UTF-Kodierung. Ich war es einfach benutzen, weil die gesamte Webseite verwendet es, und ich dache Es ist notwendig. Im Grunde, ich brauche keine code an die Stelle der nationalen Zeichen, da Sie offenbar problemlos, auch ohne Sie.
Cool 🙂
console.log
)Ihnen nie vergeben Sie den Wert zurück auf das element, nachdem Sie alle ersetzt.
Stellt sich heraus, ich war nicht wirklich in der Notwendigkeit der UTF-Kodierung. Ich war es einfach benutzen, weil die gesamte Webseite verwendet es, und ich dache Es ist notwendig. Im Grunde, ich brauche keine code an die Stelle der nationalen Zeichen, da Sie offenbar problemlos, auch ohne Sie.
Cool 🙂
InformationsquelleAutor SeinopSys | 2012-08-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nur ersetzen alles programmgesteuert, nicht mithilfe von named entities:
Wenn Sie verwenden möchten, named entities, können Sie kombinieren diese mit einem key-value-map (wie in @jackwanders Antwort):
Allerdings sollte man nie verwenden müssen, html-entities in JavaScript. Verwenden Sie utf-8 als Zeichencodierung für alles, und es wird funktionieren.
Wo nutzen Sie? Wenn Sie noch eine fehlerhafte Codierung, würden Sie brauchen, um zu entkommen die Tasten der anzeigen-Objekt.
InformationsquelleAutor Bergi
Konnten Sie erstellen ein Objekt, das Schlüssel/Wert-Paare für jedes Zeichen zu ersetzen:
Und verwenden Sie dann eine Funktion in der
.replace
nennen:Ihrem Objekt und reguläre Ausdrücke müssen natürlich wachsen, um alle Zeichen enthalten, die Sie ersetzen möchten
InformationsquelleAutor jackwanders
Die Charaktere sind Gegenstand der Kodierung der HTML-Seite, die JavaScript-Seite und den HTTP-request. Ersetzen Sie das Zeichen durch Unicode-Entsprechungen:
Überprüfen meiner Umbauten, um sicher zu sein. Verwendet habe ich das raster auf Wikibooks.
Ob das eine Lösung ist, dann sollten Sie fix Ihre Codierung. Trotzdem sollten Sie verbessern Ihren Algorithmus, siehe jackwanders' Antwort oder eine mine.
Dies wird nur dann ersetzen Sie die erste Instanz von jedem Charakter. Hier ist ein Beispiel: jsfiddle.net/hHZhv/1
InformationsquelleAutor Micah Henning
Ich denke, Sie haben ein Problem mit nur Austausch der ersten Instanz von einem Charakter. In javascript müssen Sie angeben Globale ersetzt mit regex wie diese:
Am besten wäre es, ein array zu erstellen wie erwähnt von PPvG oder jackwanders, aber ansonsten mindestens die Wiederverwendung der vorhandenen Variablen. Sie könnte leicht machen es so:
Wie ich schon sagte, diese Methode nur wieder, gibt den Wert zurück, wie es ist, und nichts mit ihm.
Ich Stimme, dass dies scheint nicht der Grund sein, warum es nicht ersetzen, aber Sie brauchen, um ein globales ersetzen, wie ich empfohlen. Sehr zu empfehlen sind auch ein array verwenden, wie erwähnt, durch PPvG und jackwanders.
Das problem wurde mit den Charakteren nicht erkannt, wie Sie waren nicht in der richtigen form, den Wechsel zu unicode gelöst.
Ich bemerkte, dass. Allerdings, wenn Sie einen Charakter mehr als einmal verwendet, Ihren aktuellen code entfernt nur die erste Instanz, dass der Charakter und der Verwendung eines Arrays wird drastisch reduzieren Sie Ihre code.
InformationsquelleAutor Josh Mein