我有一个应用程序,它使用基于Javascript的规则引擎。我需要一种方法来转换成卷曲(或智能)引号常规直引号。只需为["]
创建一个string.replace
很容易,但这只会插入一个卷曲引号的大小写。
我能想到的最好的方法是用左卷曲的引号替换第一次出现的引号,然后用左卷曲的引号替换其他引号,其余的用右卷曲的引号替换。
有没有办法使用Javascript来实现这一点?
发布于 2010-03-25 12:29:04
你可能想看看Pandoc做了什么--显然,使用--smart
选项,它可以正确地处理所有情况下的引号(包括‘tis和’the )。
我最近写了一个Javascript字体美化引擎,它做了很多事情,其中包括引用替换;我最终基本上使用了Renesis建议的算法,但目前有一个失败的测试,等待一个更聪明的解决方案。
如果您对抄袭我的代码(和/或根据您所做的工作提交补丁)感兴趣,请查看它:jsPrettify。jsprettify.prettifyStr
可以满足您的需求。如果你不想处理闭包依赖,有一个可以独立运行的older version --它甚至可以在Rhino中工作。
发布于 2010-02-05 04:12:47
'foo "foo bar" "bar"'.replace(/"([-a-zA-Z0-9 ]+)"/g, function(wholeMatch, m1){
return "“" + m1 + "”";
});
发布于 2010-11-29 12:43:34
下面的代码只是通过交替来改变每个引号(但是这个特定的例子会省略孤立的引号)。
str.replace(/\"([^\"]*)\"/gi,"“$1”");
只要你要文本化的文本没有因为双引号的不当使用而搞砸了,它就能完美地发挥作用。在英语中,引号从不嵌套。
https://stackoverflow.com/questions/2202811
复制相似问题