替换空格时javascript中的replace()方法问题

时间:2010-10-15 18:25:27

标签: javascript jquery html

这是我正在使用的功能:

function replaceH1s() {
  $("h1").each(function(){
    h1name = $(this).text();
    stuff = h1name.toLowerCase().replace(' ','-');
    $(this).html('<img src="/assets/image/h1_' + stuff + '.png" alt="' + h1name + '" />');
  })
}

我无法弄清楚为什么这个函数用连字符替换h1name字符串中的第一个空格,而不是任何后续的空格。我尝试了转义和转义(然后用连字符替换%20,但这也做了同样的事情)。我为catchall空格尝试了正则表达式,并且做了同样的事情。我觉得我在这里看不到一些超级根本的东西。

4 个答案:

答案 0 :(得分:4)

您需要指定全局正则表达式。否则它只匹配第一次出现。

// regular expression
    function replaceH1s() {
      $("h1").each(function(){
        h1name = $(this).text();
        stuff = h1name.toLowerCase().replace(/\s+/g, '-');  // matches all whitespace
                                                           // use / /g to match a single space
        $(this).html('<img src="/assets/image/h1_' + stuff + '.png" alt="' + h1name + '" />');
      })
    }

// firefox only
    function replaceH1s() {
      $("h1").each(function(){
        h1name = $(this).text();
        stuff = h1name.toLowerCase().replace(' ', '-', 'g');
        $(this).html('<img src="/assets/image/h1_' + stuff + '.png" alt="' + h1name + '" />');
      })
    }

答案 1 :(得分:1)

stuff = h1name.toLowerCase().replace(/ /g, '-');

答案 2 :(得分:0)

replace函数旨在替换您要搜索的字符串的第一个实例。如果要替换所有实例,那么使用正则表达式会更好。

请查看this page了解详情。

答案 3 :(得分:0)

如果你试图用 - 你的关闭但不完全替换所有空格

JavaScript中的replace函数只替换匹配和退出的第一个值。这是一个replaceAll函数。

stuff = h1name.toLowerCase().replace(' ' + /g, '-');​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
alert(stuff); //make sure this is what you want

/ g指定全部替换。