用更好的字符替换引号字符

时间:2011-07-15 14:44:33

标签: javascript html

我有一个网页,我想用更好看的引号替换所有标准引号字符"。例如,我们有

"hello world"

将替换为

“hello world”

在标记中,显示更好看的“卷曲”引号。

两个HTML特殊字符是成对的,因为它们“打开”和“关闭”一个引用块,而不是一个通用的双破折号,这是我正在努力的地方 - 只需用{{1}替换所有引号很容易,但我想这样做,以便尊重开/关对。

2 个答案:

答案 0 :(得分:3)

如果你有一个像test "abc" test "abc"这样的字符串,你可以通过查看它前面有多少"来检查每个"是应该是开放还是结束的字符串:< / p>

如果是偶数,则应为&ldquo;,否则为&rdquo;

var str = 'test "abc" test "abc"';
var splitted = str.split('"');
var result = '';
for(var i = 0; i < splitted.length; i++) {
    result += splitted[i] + ( i % 2 == 0 ? '&ldqou;' : '&rdquo;' );
}
result = result.substring(0, result.length - 7); // remove last appended &ldquo;

答案 1 :(得分:2)

我可能会遗漏一些明显的东西,但我认为以下RegEx解决方案可行 -

subject = 'test "abc" test "abc"';
result = subject.replace(/"([A-Za-z ]*)"/ig, "&ldquo;$1&rdquo;");
alert(result);

如果您使用的是PHP,那么您可以在PHP中编写一些类似的代码 - (我的PHP技能虽然有点缺乏!下面的代码是使用RegEx Buddy生成的,因此它尚未经过测试,可能需要更改)

$subject = 'test "abc" test "abc"';    
$result = preg_replace('/"([A-Za-z ]*)"/i', '&ldquo;$1&rdquo;', $subject);

或者,您可以使用PHP将内容加载到DIV中,然后使用JavaScript来更改DIV内容,这里有一些JQuery可以完成这项工作 -

$("#contentdiv").text($("#contentdiv").text().replace(/"([A-Za-z ]*)"/ig, "&ldquo;$1&rdquo;"));

有一个jsfiddle演示了上面的JQuery here