我有一个网页,我想用更好看的引号替换所有标准引号字符"
。例如,我们有
"hello world"
将替换为
“hello world”
在标记中,显示更好看的“卷曲”引号。
两个HTML特殊字符是成对的,因为它们“打开”和“关闭”一个引用块,而不是一个通用的双破折号,这是我正在努力的地方 - 只需用{{1}替换所有引号很容易,但我想这样做,以便尊重开/关对。
答案 0 :(得分:3)
如果你有一个像test "abc" test "abc"
这样的字符串,你可以通过查看它前面有多少"
来检查每个"
是应该是开放还是结束的字符串:< / p>
如果是偶数,则应为“
,否则为”
。
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;' : '”' );
}
result = result.substring(0, result.length - 7); // remove last appended “
答案 1 :(得分:2)
我可能会遗漏一些明显的东西,但我认为以下RegEx解决方案可行 -
subject = 'test "abc" test "abc"';
result = subject.replace(/"([A-Za-z ]*)"/ig, "“$1”");
alert(result);
如果您使用的是PHP,那么您可以在PHP中编写一些类似的代码 - (我的PHP技能虽然有点缺乏!下面的代码是使用RegEx Buddy生成的,因此它尚未经过测试,可能需要更改)
$subject = 'test "abc" test "abc"';
$result = preg_replace('/"([A-Za-z ]*)"/i', '“$1”', $subject);
或者,您可以使用PHP将内容加载到DIV中,然后使用JavaScript来更改DIV内容,这里有一些JQuery可以完成这项工作 -
$("#contentdiv").text($("#contentdiv").text().replace(/"([A-Za-z ]*)"/ig, "“$1”"));
有一个jsfiddle演示了上面的JQuery here。