Website-Suche

javascript - Alle Vorkommen eines Zeichens in einem String in TypeScript ersetzen?


Ich versuche, alle Punkte in einer E-Mail durch ein x-Zeichen zu ersetzen - zum Beispiel würde aus "[email " "myxemail@emailxcom" werden. Die E-Mail ist als Zeichenkette festgelegt.
Mein Problem ist, dass nicht nur Punkte ersetzt werden, sondern jedes Zeichen, sodass ich nur eine Zeichenkette aus x erhalte.
Ich kann es zum Laufen bringen, wenn nur ein Punkt vorhanden ist, deshalb gehe ich davon aus, dass ich beim globalen Einsatz etwas falsch mache. Hier ist mein Code:

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

Ich habe es auch versucht

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

Wenn irgendjemand Licht ins Dunkel bringen kann, wäre ich wirklich dankbar, ich stecke schon so lange fest und kann einfach nicht herausfinden, wo ich einen Fehler mache.

** Bearbeiten: Hoppla, meine neue Variable hieß eigentlich newemail, das Schlüsselwort new hat das Problem nicht verursacht!

Antwort #1

Ihr zweites Beispiel ist das nächste. Das erste Problem ist Ihr Variablenname, new, der zufällig eines der reservierten Schlüsselwörter von JavaScript ist (und stattdessen verwendet wird, um Objekte zu konstruieren, wie new RegExp oder new Set). Das bedeutet, dass Ihr Programm einen Syntaxfehler auslösen wird.

Da der Punkt (.) ein Sonderzeichen in der Regex-Syntax ist, sollten Sie ihn als \. maskieren. Andernfalls würden Sie am Ende result == "xxxxxxxxxxxxxxxxxx" erhalten, was unerwünscht ist.

let email = "[email "

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

console.log(result)

Antwort #2

Du kannst die Methoden split() und join() ausprobieren, die bei mir funktioniert haben. (Für normalen String-Text) Es war kurz und einfach zu implementieren und zu verstehen. Unten ist ein Beispiel.

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

Also ersetzt es alle deine . durch x. Danach wird die email-Variable im obigen Beispiel den Wert myxemail@gmailxcom haben.

Antwort #3

Sie können einfach die String-Funktion replaceAll() verwenden, die hier beschrieben wird: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll

Wenn Sie den Fehler Property 'replaceAll' existiert nicht auf Typ 'string' erhalten - gehen Sie zu tsconfig.json und ändern oder fügen Sie innerhalb von "lib" "es2021" hinzu.

So:

Mehr Infos hier: Eigenschaft 'replaceAll' existiert nicht auf dem Typ 'string'

Verwandte Artikel