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

问题描述 投票:0回答:3

我正在尝试用 x 字符替换电子邮件中的所有句号 - 例如“[email protected]”将变为“myxemail@emailxcom”。电子邮件设置为字符串。
我的问题是它不只是替换句号,而是替换每个字符,所以我只得到一串 x。
我只需一个句号就可以让它工作,所以我假设我在全局实例部分是错误的。这是我的代码:

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

我也试过了

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

如果有人能阐明我真的很感激,我已经坚持了这么久,似乎无法弄清楚我哪里出错了。

** 编辑:糟糕,我的新变量实际上叫做 newemail,关键字 new 不是导致问题的原因!

javascript string typescript replace global
3个回答
93
投票

你的第二个例子是最接近的。第一个问题是你的变量名,

new
,它恰好是 JavaScript 的保留关键字之一(而是用于构造对象,如
new RegExp
new Set
)。这意味着您的程序将抛出语法错误。

此外,由于点 (

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

let email = "[email protected]"

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

console.log(result)


71
投票

您可以尝试对我有用的

split()
join()
方法。 (对于普通字符串文本) 它简短而易于实施和理解。 下面是一个例子。

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

因此,它将用

.
替换您所有的
x
。所以,在上面的例子之后,
email
变量将具有值
myxemail@gmailxcom


7
投票

您可以只使用

replaceAll()
String 函数,如下所述: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll

如果你得到 “字符串”类型不存在属性“replaceAll” 错误 - 转到

tsconfig.json
并在“lib”中更改或添加“es2021”。

像这样:

此处提供更多信息:属性“replaceAll”在类型“字符串”上不存在

© www.soinside.com 2019 - 2024. All rights reserved.