替换打字稿中字符串中的所有字符实例?

Reb*_*cca 11 javascript string replace global typescript

我正在尝试用x字符替换电子邮件中的所有句号 - 例如"my.email@email.com"将变为"myxemail @ emailxcom".电子邮件设置为字符串.
我的问题是它不是替换完全停止,而是替换每个角色,所以我只得到一串x.
我只需要一个完整的停止工作,所以我假设我在全局实例部分错了.这是我的代码:

let re = ".";
let new = email.replace(/re/gi, "x");
Run Code Online (Sandbox Code Playgroud)

我也试过了

re = /./gi;
new = email.replace(re, "x");
Run Code Online (Sandbox Code Playgroud)

如果任何人都可以放弃任何亮光,我会非常感激,我已经坚持了这么久,似乎无法弄清楚我哪里出错了.

**编辑:哎呀,我的新变量实际上叫做newemail,关键字new并没有引起问题!

Aja*_*pta 38

您可以尝试split()join()方法,这是为我工作。(对于普通的字符串文本)它的实现和理解都很简短。下面是一个例子。

let email = "my.email@email.com";
email.split('.').join('x');
Run Code Online (Sandbox Code Playgroud)

因此,它将.x. 所以,经过上面的例子,email变量变成myxemail@gmailxcom


gyr*_*yre 29

你的第二个例子是最接近的.第一个问题是您的变量名称,new它恰好是JavaScript的保留关键字之一(而是用于构造对象,如new RegExpnew Set).这意味着您的程序将抛出语法错误.

此外,由于dot(.)是正则表达式语法中的特殊字符,因此您应该将其转义为\..否则你会最终得到result == "xxxxxxxxxxxxxxxxxx",这是不可取的.

let email = "my.email@email.com"

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

console.log(result)
Run Code Online (Sandbox Code Playgroud)


小智 12

您可以只使用replaceAll()字符串函数,如下所述: https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll

如果您收到 Property 'replaceAll' does not exit on type 'string' 错误 - 转到tsconfig.json“lib”并在其中更改或添加“es2021”。

像这样:

在此输入图像描述

更多信息在这里:属性“replaceAll”在类型“string”上不存在