【问题标题】:Javascript String.Replace doesnt work?Javascript String.Replace 不起作用?
【发布时间】:2011-08-25 21:13:55
【问题描述】:

我目前正在尝试为我正在创建的网站创建导航系统。我花了几个小时试图解决这个问题,但我不明白为什么它不起作用 我正在尝试用变量文件名替换所有出现的“index.html”。

function changeSideNav(filenames)
{   
    var urlarray = window.location.href.split("?");
    var url = urlarray[0];
    alert(url); // This returns "http://localhost/xxx/index.html"
    var urlspl = url.replace(/index.html/gi,filenames);
    alert(url.replace(/index.html/i,filenames) +'/'+ filenames); //This returns "http://localhost/xxx/index.html/newpage.html" (if pram was newpage.html).
    //i txpected it to return "http://localhost/xxx//newpage.html"
    //set a new source
    document.getElementById('SideNavIframe').src = urlspl +'/'+ filenames;
}

编辑: 我觉得这很奇怪: 如果我尝试替换“/index.html”而不是“index.html”,它会从输出中删除“/”,所以我得到“http://localhost/xxxindex.html/newpage.html”。

【问题讨论】:

  • 为什么不简单地url.replace("/index.html", filenames)
  • 该代码实际上工作得很好。
  • 如果我是你,我会发送alert(filenames) 以确保你知道正在发生的一切。

标签: javascript replace split


【解决方案1】:

您将字符串指定为正则表达式。尝试指定一个子字符串作为 replace() 的第一个参数,如下所示:

var url = "http://localhost/xxx/index.html";
url.replace('index.html','changed.html');  // add 'gi' as 3rd param for all occurrences

See docs for String.replace

【讨论】:

    【解决方案2】:

    来自http://www.devguru.com/technologies/ecmascript/quickref/regexp_special_characters.html

    小数点匹配任何一个 换行符除外 特点。因此,例如,与 字符串“猫吃飞蛾”的 正则表达式 /.t/gi 将匹配 字母 'at' 在 'cat' 中, 'at' 在 “飞蛾”中的“吃”和“不”,但不是 “The”的首字母“T”。

    所以你必须逃避句号:

    url.replace(/index\.html/gi,filenames)
    

    【讨论】:

    • 但是“.”实际上将匹配“。”在“index.html”中就好了。
    • @Pointy,是的......如果你逃避它。
    • 它也会匹配一个“.”如果您转义它,因为“。”匹配任何字符 - 包括“.”。
    【解决方案3】:

    不确定这是否是您的问题。但我被困在这个问题上好一个小时。

    这里是:
    str.replace("s1", "s2") 不会对 str 做任何事情。

    您需要这样做:
    str=str.replace("s1", "s2");

    注意 LHS 显式捕获替换的结果。

    希望对你有帮助:)

    【讨论】:

      猜你喜欢
      • 2013-02-07
      • 2011-11-30
      • 2018-02-23
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      • 2014-05-13
      • 2013-03-05
      相关资源
      最近更新 更多