web-dev-qa-db-ja.com

タイプスクリプトの文字列内の文字のすべてのインスタンスを置き換えますか?

メール内のすべてのストップをx文字に置き換えようとしています。たとえば、「[email protected]」は「myxemail @ emailxcom」になります。電子メールは文字列に設定されます。
私の問題は、完全なストップだけを置き換えるのではなく、すべての文字を置き換えることなので、xの文字列を取得するだけです。
たった1つのフルストップで動作するので、グローバルインスタンスの部分が間違っていると思います。私のコードは次のとおりです。

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

私も試しました

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

誰もが光を当てることができるなら、私はそれを本当に感謝しています、私はこれに長い間立ち往生しており、どこが間違っているのか分かりません。

**編集:おっと、私の新しい変数は実際にはnewemailと呼ばれていましたが、キーワードnewは問題を引き起こしていませんでした!

9
Rebecca

2番目の例が最も近いです。最初の問題は、変数名newです。これは、JavaScriptの 予約済みキーワード (代わりに、new RegExpnew Setなどのオブジェクトの構築に使用されます。これは、プログラムが構文エラーをスローすることを意味します。

また、ドット(.)は正規表現文法内の特殊文字であるため、\.としてエスケープする必要があります。そうしないと、result == "xxxxxxxxxxxxxxxxxx"になってしまいますが、これは望ましくありません。

let email = "[email protected]"

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

console.log(result)
27
gyre

私のために働いていたsplit()およびjoin()メソッドを試すことができます。 (通常の文字列テキストの場合)実装と理解が短くて簡単でした。以下に例を示します。

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

だから、それはxですべてのあなたの.に置き換えられます。したがって、上記の例の後、email変数になるmyxemail@gmailxcom

1
Ajay Gupta