【问题标题】:replace space with dash JavaScript用破折号 JavaScript 替换空格
【发布时间】:2010-04-17 05:56:49
【问题描述】:
var html = "<div>"+title+"<br/>";
document.write(title.replace(/ /g,"-"));
html+= '<p><a href="go.aspx?title=' + title + '">Details<\/a></p></div>';

我想用破折号替换 title 空格。

【问题讨论】:

  • title.replace(' ', '-')
  • title.replace(' ', '-') 只会替换第一个空格。请在下面查看我的答案。

标签: javascript


【解决方案1】:

改用title.replace(/\s/g , "-")。 (/\s/ 是空格的正则表达式转义)。

另外,做:

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

【讨论】:

  • 我基本同意,但我建议移动 title.replace(/\s/g , "-");到中间线。直观地说,我不认为他们想要 div 中的破折号,但他们在 URL 中想要。请参阅我的答案以获得澄清和我建议的修改后的代码块。感谢 ehdv 的贡献。
【解决方案2】:

调用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>';

正则表达式很好,但只会替换空格而不是所有空格。

【讨论】:

    【解决方案3】:

    我发现替换函数中常用的正则表达式很难阅读 - 而且很容易忘记 not 引用您正在搜索的字符串或省略 /g 来指示全局替换.对于做一些简单的事情,比如用破折号替换空格,使用更容易理解的“split”后跟“join”同样快。

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

    https://jsfiddle.net/n0u3aw5c/

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-25
          • 1970-01-01
          • 1970-01-01
          • 2013-01-14
          • 1970-01-01
          • 1970-01-01
          • 2013-12-11
          • 1970-01-01
          相关资源
          最近更新 更多