用破折号JavaScript替换空间

时间:2010-04-17 05:56:50

标签: javascript

var html = "<div>"+title+"<br/>";
document.write(title.replace(/ /g,"-"));
html+= '<p><a href="go.aspx?title=' + title + '">Details<\/a></p></div>';

我想用破折号替换标题空格。

5 个答案:

答案 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("-"));

https://jsfiddle.net/n0u3aw5c/

答案 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>