【问题标题】:Replace function only works once (javascript)替换功能只工作一次(javascript)
【发布时间】:2013-03-27 11:12:57
【问题描述】:

每次 str1 在特定 div 中显示时,我都需要用另一个字符串 (str2) 替换一个字符串 (str1)。

这是我目前得到的

<script type="text/javascript"> 
$(window).load(function(){

var str=document.getElementById("foo").innerHTML; 
var n=str.replace("Google","Yahoo");
document.getElementById("foo").innerHTML=n;

}); 

</script>

和html

<div id="foo">
Google is the best website ever <br />
Google is not the best website ever</div>

不幸的是,当我运行它时,它只替换了 Google 一词的第一个实例。

我做错了什么?我需要添加什么以使其替换单词的所有实例?

【问题讨论】:

标签: javascript jquery html dom


【解决方案1】:

使用正则表达式/string/g 替换所有匹配项,您使用的子字符串将根据replace() 函数的文档仅替换第一次出现。

Live Demo

var n=str.replace(/Google/g,"Yahoo");

String.prototype.replace() replace() 方法返回一个新字符串,其中模式的部分或全部匹配被替换替换。模式可以是字符串或正则表达式,替换可以是字符串或每次匹配调用的函数。

str.replace(regexp|substr, newSubStr|function)

您正在使用 substr 模式,它将仅替换第一次出现。

substr(模式)

要被 newSubStr 替换的字符串。它被视为一个 逐字字符串,不被解释为正则表达式。仅有的 第一个匹配项将被替换。

使用此正则表达式模式替换所有出现的情况。

正则表达式(模式)

RegExp 对象或文字。比赛被替换为 参数#2的返回值。

【讨论】:

  • 好答案。你能解释一下为什么replace() 函数在给定字符串参数时不会替换所有出现的地方吗?
  • 谢谢,请查看我更新的答案,希望它能回答你的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 2017-09-10
相关资源
最近更新 更多