JavaScript 中替换字符串

Posted by cl9000 on July 06, 2020

预测未来最好的方法就是去创造未来。——<亚伯拉罕·林肯>

作者:Ashish Lahoti
译者:cl9000
来源:https://codingnconcepts.com/javascript/how-to-replace-all-occurrences-string-javascript/

在本教程中,我们将学习如何使用 String.replace() 方法替换 JavaScript 中所有出现的字符串。我们还将研究 String.split()Array.join()

1. 使用 String.replace

让我们快速看一下语法:

1
const newStr = String.replace("pattern", "replacement");

String.replace() 在用 string 替换出现的 match 之后,该方法返回一个新 patternreplacement 字符串。

Pattern 可以是 String或RegEx

要注意的重要一点是pattern可以是 aStringa RegEx

  • 如果patternString,则仅替换第一个匹配项。
  • 如果patternRegEx,则在/g使用全局标志的情况下将替换所有出现的事件。您还可以使用/i标志启用不区分大小写的替换。
    让我们看一个例子
1
2
3
4
const lyrics = "Smelly cat, smelly cat what are they feeding you?";

console.log(lyrics.replace("cat", "kitty")); //pattern is String
console.log(lyrics.replace(/cat/, "kitty")); //pattern is RegEx

Output
"Smelly kitty, smelly cat what are they feeding you?"
“Smelly kitty, smelly cat what are they feeding you?”

我们看到该模式作为 StringRegEx 两者都返回了相同的结果,并且仅替换了第一次出现的模式。

具有全局标志的 RegEx /g

让我们使用RegExwith全局标志/g替换所有出现的事件。

1
2
3
const lyrics = "Smelly cat, smelly cat what are they feeding you?";

console.log(lyrics.replace(/cat/g, "kitty"));

Output
"Smelly kitty, smelly kitty what are they feeding you?"

我们看到只有第一次出现被替换。我们可以通过使用中的/i标志来启用不区分大小写的替换RegEx。

1
2
3
const lyrics = "Smelly cat, smelly cat what are they feeding you?";

console.log(lyrics.replace(/Smelly cat/gi, "Sweet kitty"));

Output
"Sweet kitty, Sweet kitty what are they feeding you?"

我们可以使用 Regex 全局和不区分大小写的标志替换所有出现的字符串 /<pattern>/gi

2. 使用 String.split 和 Array.join

一种比另一种方法慢的替代方法是 String.replace() 两步方法:-

  • 使用拆分字符串 String.split() 以删除匹配的(区分大小写)模式并返回数组,
  • 使用 Array.join() 替换字符串再次加入阵列
1
const newStr = String.split("pattern").join("replacement");

让我们来看一个例子。

1
2
3
const lyrics = "Smelly cat, smelly cat what are they feeding you?";

console.log(lyrics.split("cat").join("kitty"));

Output
"Smelly kitty, smelly kitty what are they feeding you?"

参考

关注【公众号】,了解更多。



支付宝打赏 微信打赏

赞赏一下 坚持原创技术分享,您的支持将鼓励我继续创作!