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

Posted

技术标签:

【中文标题】替换打字稿中字符串中的所有字符实例?【英文标题】:Replace all instances of character in string in typescript? 【发布时间】:2017-09-04 18:37:18 【问题描述】:

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

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

我也试过了

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

如果有人能提供任何启发,我将不胜感激,我已经坚持了这么久,似乎无法弄清楚我哪里出错了。

** 编辑:哎呀,我的新变量实际上被称为 newemail,关键字 new 没有导致问题!

【问题讨论】:

newjavascript中的保留字 【参考方案1】:

你的第二个例子是最接近的。第一个问题是你的变量名,new,它恰好是 JavaScript 的reserved keywords 之一(而是用于构造对象,如new RegExpnew Set)。这意味着您的程序将引发语法错误。

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

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

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

console.log(result)

【讨论】:

我的 /./gi 出错了,/\./ 解决了这个问题!谢谢一百万! 如何根据索引替换字符串中的字符? @George 你是什么意思?你能给我一个想要的例子/输出吗? let theString = "george" ,我想替换第三个字符,例如 theString[2]="a" 所以现在它会是 'gearge' 在这种情况下,我建议:let string = 'george'; let result = string.slice(0, 2) + 'a' + string.slice(3);【参考方案2】:

您可以尝试对我有用的split()join() 方法。 (对于普通字符串文本) 它很简短,易于实施和理解。 下面是一个例子。

let email = "my.email@email.com";
email.split('.').join('x');

因此,它会将您的所有. 替换为x。所以,在上面的例子之后,email 变量变成了myxemail@gmailxcom

【讨论】:

我认为这应该是基本搜索/替换的默认方法,而不是使用任何正则表达式。 这太棒了!!

以上是关于替换打字稿中字符串中的所有字符实例?的主要内容,如果未能解决你的问题,请参考以下文章

字符串枚举类似于打字稿中的类型[重复]

typescript 打字稿中的字符类

如何在打字稿中扩展字符串?

无法让嵌套类型保护与打字稿中的联合类型一起使用

如何在打字稿中迭代字符串文字类型

在打字稿中,如何检查字符串是不是为数字