0

我的网站上显示了来自 XML 提要的数据。不幸的是,在 XML 提要中,所有者使用了重音:` 而不是撇号:'

我正在使用以下 javascript 尝试用撇号替换重音符号,但它仅适用于内容中的第一个重音符号。如何调整代码以使其影响 p 标签内的所有重音。

<script type="text/javascript">
    $("p").each(function() {
    var text = $(this).text();
    text = text.replace("`", "'");
    $(this).text(text);
    });
   </script>
4

4 回答 4

5

使用带有 "global" ( g) 标志的正则表达式:

text = text.replace(/`/g, "'");

当您将字符串用作第一个参数时,仅替换第一个匹配项(如您所见)。使用该g标志,所有匹配项都将被替换。(显然,如果您使用正则表达式中的任何特殊字符,请务必将它们转义。例如,如果您想替换所有[字符,则需要\在 the 之前将[其转义,否则它具有特殊正则表达式中的含义。)

另请参阅Ricardo关于使用将函数text直接传递给而不是using 的能力的说明each,例如:

<script type="text/javascript">
    $("p").text(function(index, text) {
        return text.replace(/`/g, "'");
    });
</script>
于 2013-03-28T18:19:58.797 回答
1

你不需要each

$('p').text(function(i, text) {
    return text.replace(/\`/g, "'");
});
于 2013-03-28T18:21:12.240 回答
0

您需要使用正则表达式 - 例如:

text = text.replace(/`/gi, "'");

常规替换仅替换第一个实例。

于 2013-03-28T18:21:21.283 回答
0

你必须使用一个贪婪的正则表达式:

text = text.replace(/`/g, "'");
于 2013-03-28T18:22:41.353 回答