预测未来最好的方法就是去创造未来。——<亚伯拉罕·林肯>
作者: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
之后,该方法返回一个新 pattern
的 replacement
字符串。
Pattern 可以是 String或RegEx
要注意的重要一点是pattern
可以是 aString
或 a RegEx
。
- 如果
pattern
为String
,则仅替换第一个匹配项。 - 如果
pattern
为RegEx
,则在/g使用全局标志的情况下将替换所有出现的事件。您还可以使用/i标志启用不区分大小写的替换。
让我们看一个例子
1 | const lyrics = "Smelly cat, smelly cat what are they feeding you?"; |
Output
"Smelly kitty, smelly cat what are they feeding you?"
“Smelly kitty, smelly cat what are they feeding you?”
我们看到该模式作为 String
或 RegEx
两者都返回了相同的结果,并且仅替换了第一次出现的模式。
具有全局标志的 RegEx /g
让我们使用RegExwith全局标志/g替换所有出现的事件。
1 | const lyrics = "Smelly cat, smelly cat what are they feeding you?"; |
Output
"Smelly kitty, smelly kitty what are they feeding you?"
我们看到只有第一次出现被替换。我们可以通过使用中的/i标志来启用不区分大小写的替换RegEx。
1 | const lyrics = "Smelly cat, smelly cat what are they feeding you?"; |
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 | const lyrics = "Smelly cat, smelly cat what are they feeding you?"; |
Output
"Smelly kitty, smelly kitty what are they feeding you?"
参考
- https://codingnconcepts.com/javascript/how-to-replace-all-occurrences-string-javascript/
- MDN - https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/replace
- MDN - https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/split
- MDN - https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/join
关注【公众号】,了解更多。
赞赏一下 坚持原创技术分享,您的支持将鼓励我继续创作!