2013-05-08 183 views
15

以下代码只替换一个单引号。我需要用双引号替换所有单引号。我该怎么做?javascript替换双引号单引号

var a = "[{'column1':'value0','column2':'value1','column3':'value2'}]"; 
var b = a.replace("'", "\""); 
+0

http://stackoverflow.com/questions/2390789/how-to-replace-all-points-in-a -string-in-javascript – valverij 2013-05-08 21:11:43

回答

44
var b = a.replace(/'/g, '"'); 

编辑:删除\因为有没有用在这里。

+2

真棒,它的工作原理,但我不明白'g'是什么。 – gangt 2013-05-08 21:14:21

+1

这是一个RegExp标志。 [阅读所有关于他们。(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp) – qJake 2013-05-08 21:15:46

+2

“G”标志意味着你进行全局搜索 – RafH 2013-05-08 21:15:50

3

您可以在正则表达式使用全局预选赛(尾g):

var b = a.replace(/'/g, '"'); 

没有全球预选赛,正则表达式(/'/)只匹配的'的第一个实例。

0

添加g修改: var b = a.replace(/'/g, '"');

1

这看起来很像坏JSON,所以我建议用实际的数组和对象文本,然后以正确的方式编码:

var a = [{'column1':'value0','column2':'value1','column3':'value2'}]; 
var b = JSON.stringify(a); 
+0

我这样做了,但它比替换字符串花费的时间太长。 – gangt 2013-05-08 23:37:38

+0

我可以创建在首位正确格式的JSON字符串,但我有一个隐藏字段存放的麻烦(如会话)。我将所有双引号替换为单引号,以便将其存储在隐藏字段中。然后在客户端,我将其替换回双引号。如果是它的一个更好的解决方案 – gangt 2013-05-08 23:39:42

0

您可以使用正规与全球标志g和所有的报价将更换:

var b = a.replace(/'/g, '"'); 
+0

你不“只是添加全局标志'g'”我将不胜感激。您创建了一个正则表达式并设置了全局标志。其中,通过的方式,取代了错误的字符与错误的字符 – Ian 2013-05-08 21:14:53

+0

@lan好些了吗? :) – yckart 2013-05-08 21:17:24

+0

是的,先生,这是:) – Ian 2013-05-08 21:18:16