Remplacez plusieurs caractères dans une chaîne en javascript
J'ai reçu ce joli code, je n'ai aucune idée de pourquoi ça ne marche pas. Il doit avoir la valeur d'une saisie de texte et de remplacer chaque caractère national avec du code HTML, pour des raisons de compatibilité. Mais, quand je clique sur le bouton, la fonction renvoie la chaîne sans aucune modification.
Une idée?
(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>
source d'informationauteur SeinopSys
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement remplacer tout par programme, ne pas utiliser entités nommées:
Si vous souhaitez utiliser des entités nommées, vous pouvez combiner cela avec une valeur-clé-carte (comme dans @jackwanders réponse):
Cependant, vous ne devriez jamais avoir besoin d'utiliser les entités html en JavaScript. L'utilisation de l'utf-8 comme encodage pour tout, et il va fonctionner.
Vous pouvez créer un objet qui a des paires clé/valeur pour chaque caractère à remplacer:
Et ensuite utiliser une fonction dans votre
.replace
appel:Votre objet et votre expression régulière sera bien évidemment besoin de croître pour inclure tous les caractères que vous souhaitez remplacer
Les personnages sont soumis à l'encodage de la page HTML, le JavaScript de la page, et la requête HTTP. Essayez de remplacer les personnages, avec leurs Unicode équivalents:
Double vérifier mes conversions pour être sûr. J'ai utilisé la grille sur Wikibooks.
Je pense que vous avez un problème avec seulement le remplacement de la première occurrence d'un caractère. En javascript, vous devez spécifier mondiale remplace en utilisant les regex comme ceci:
Il serait préférable de créer un tableau tel que mentionné par PPvG ou jackwanders, mais sinon, au moins réutiliser la variable existante. Vous pouvez facilement le faire comme ceci: