var html = "<div>"+title+"<br/>";
document.write(title.replace(/ /g,"-"));
html+= '<p><a href="go.aspx?title=' + title + '">Details<\/a></p></div>';
我想用破折号替换标题空格。
答案 0 :(得分:13)
请尝试使用title.replace(/\s/g , "-")
。 (/\s/
是空格的正则表达式转义。)
另外,请执行:
title = title.replace(/\s/g , "-");
var html = "<div>" + title + "</div>";
// ...
答案 1 :(得分:5)
调用title.replace
不会更改标题,但会返回已替换值的字符串。您需要使用返回的值:
var html = "<div>"+title+"<br/>";
var newTitle = document.write(title.replace(/ /g,"-"));
html+= '<p><a href="go.aspx?title=' + newTitle + '">Details<\/a></p></div>';
正则表达式很好,但只会替换空格而不是所有空格。
答案 2 :(得分:1)
我发现替换函数中常用的正则表达式很难读-而且很容易忘记不引用正在搜索的字符串或省略/ g来表示全局替换。对于执行简单的操作(例如用破折号替换空格),使用更易于理解的“ split”后接“ join”也一样快。
alert("this is a test".split(" ").join("-"));
答案 3 :(得分:0)
var str = "Tatwerat Development Team";
str = str.replace(/\s+/g, '-');
document.write(str)
答案 4 :(得分:0)
ehdv的答案可以为您提供90%的解决方案。我只是想弄清楚他建议的代码在您的代码中的位置,并且在注释中看起来不正确。
var html = "<div>" + title + "<br/>";
title = title.replace(/\s/g , "-");
html+= '<p><a href="go.aspx?title=' + title + '">Details<\/a></p></div>';
这假设您不想在div中使用破折号,但您确实希望在URL中使用破折号。
如果您还想用单破折号代替一个接一个的连续空格,而不是在标题中以双破折号结尾,请使用以下代替:
var html = "<div>" + title + "<br/>";
title = title.replace(/\s+/g , "-");
html+= '<p><a href="go.aspx?title=' + title + '">Details<\/a></p>
我还要提到您没有关闭div。也许您只是没有在代码中包含该部分,但值得一提。您的字符串中也有一个不必要的\。它并没有伤害任何东西,但这不是必需的。也许您的代码应该看起来像这样:
var html = "<div>" + title + "</div>";
title = title.replace(/\s/g , "-");
html+= '<p><a href="go.aspx?title=' + title + '">Details</a></p>