web-dev-qa-db-fra.com

Remplacer toutes les instances de caractère dans la chaîne en tapuscrit?

J'essaie de remplacer tous les points dans un e-mail par un caractère x - par exemple, "[email protected]" deviendrait "myxemail @ emailxcom". L'e-mail est défini sur une chaîne.
Mon problème n'est pas de remplacer seulement les points, c'est de remplacer chaque caractère, donc je reçois juste une chaîne de x.
Je peux le faire fonctionner avec un seul point, donc je suppose que je me trompe sur la partie d'instance globale. Voici mon code:

let re = ".";
let new = email.replace(/re/gi, "x");

J'ai aussi essayé

re = /./gi;
new = email.replace(re, "x");

Si quelqu'un peut faire la lumière, je l'apprécierais vraiment, je suis coincé là-dessus depuis si longtemps et je n'arrive pas à comprendre où je me trompe.

** Edit: Oups, ma nouvelle variable s'appelait en fait newemail, le mot clé new n'était pas à l'origine du problème!

9
Rebecca

Votre deuxième exemple est le plus proche. Le premier problème est le nom de votre variable, new, qui se trouve être l'un des JavaScript mots-clés réservés ( et est plutôt utilisé pour construire des objets, comme new RegExp ou new Set). Cela signifie que votre programme générera une erreur de syntaxe.

De plus, puisque le point (.) est un caractère spécial dans la grammaire regex, vous devez l'échapper comme \.. Sinon, vous vous retrouvez avec result == "xxxxxxxxxxxxxxxxxx", ce qui n'est pas souhaitable.

let email = "[email protected]"

let re = /\./gi;
let result = email.replace(re, "x");

console.log(result)
27
gyre

Vous pouvez essayer la méthode split() et join() qui fonctionnait pour moi. (Pour le texte de chaîne normal) Il était court et simple à mettre en œuvre et à comprendre. Voici un exemple.

let email = "[email protected]";
email.split('.').join('x');

Ainsi, il remplacera tous vos . avec x. Ainsi, après l'exemple ci-dessus, la variable email devient myxemail@gmailxcom

1
Ajay Gupta