Javascript String.Replace不起作用?

时间:2011-05-15 12:17:32

标签: javascript replace split

我正在尝试为我正在创建的网站创建导航系统。我花了好几个小时试图解决这个问题,但我不明白为什么它不起作用 我正在尝试用变量filenames替换所有出现的“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”。

3 个答案:

答案 0 :(得分:1)

不确定这是不是你的概率。但是我坚持了一个小时。

这是:
str.replace("s1", "s2")对str没有任何作用。

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

请注意LHS明确捕获替换结果。

希望有所帮助:)

答案 1 :(得分:0)

您将字符串指定为正则表达式。尝试将子字符串指定为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 :(得分:0)

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

  

小数点与任何单个点匹配   字符除了新行   字符。所以,例如,与   字符串“猫吃飞蛾”   正则表达式/.t/gi会匹配   字母'at'在'cat','at'中   '飞蛾'中的'吃'和'ot',但不是   'The'的初始'T'。

所以你必须逃避这段时间:

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