将空格替换为破折号JavaScript

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

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


title.replace(' ', '-') - ma11hew28
1
title.replace(' ', '-')只会替换第一个空格。请看下面我的答案。 - Aaron Plocharczyk
5个回答

24

尝试使用title.replace(/\s/g , "-")代替。(/\s/是空格的正则表达式转义符)。

此外,执行以下操作:

title = title.replace(/\s/g , "-");
var html = "<div>" + title + "</div>";
// ...

我基本上同意,但我建议将title.replace(/\s/g , "-");移动到中间行。直觉上,我认为他们不想在div中使用破折号,但在URL中需要。请查看我的答案以了解澄清和我建议的修订代码块。感谢您的贡献ehdv。 - Aaron Plocharczyk

8

我发现在替换函数中普遍使用的正则表达式很难阅读 - 而且很容易忘记不要引用你要搜索的字符串,或者省略/g以表示全局替换。对于简单地将空格替换为破折号之类的操作,使用更易于理解的“split”和“join”同样快速。

alert("this is a test".split(" ").join("-"));

https://jsfiddle.net/n0u3aw5c/


简单而高效的解决方案 - itsgus.dev

6
调用 title.replace 不会改变 title 变量,但会返回一个值已被替换的字符串。你需要使用返回的值:
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

var str = "Tatwerat Development Team";
str = str.replace(/\s+/g, '-');
document.write(str)


1

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接