2011-03-02 113 views
1

我一直在试图取代使用下列字符串以下...字符串替换不工作?

var r = response.replace('var s = getService().getValue(\"join\")', 'null'); 

但是,字符串保持不改变,我不明白为什么。该字符串本身采取以下格式..

{"r":[],"c":true,"c":{"tags": 
[],"":3023,"s":"[email protected]","class":"class 
src.util.dtos.DTO","Type":"public","c":"m","s":0,"de 
fault":false,"id":544,"d":"","n":4,"na":"S","tagString":"","Pages":5},"results":[],"q":"","msg":"var 
s = getService().getValue(\"join\") 

实际的字符串本身有点长,但我希望你从该摘要中得到的想法。

+0

您是否使用javascript代码生成javascript代码?我希望不会... – Zoidberg 2011-03-02 12:39:34

+0

@Zoidberg,他替换为null我相信他有一个javascript对象,可能是一些遗留系统返回值,并尝试删除任何方法调用来获取JSON对象。 – 2011-03-02 12:41:02

回答

2

如果您

var s = getService().getValue(\"join\") 

部分是一个JSON字符串内使用JavaScript代码,那么你需要说出来了再次更换之前。

​​
+0

修好了!谢谢 :) – Skizit 2011-03-02 12:58:05

2

这是因为在JSON中转义的双引号不应该在单引号字符串中转义。

代替

所以:

var r = response.replace('var joinstakqueries = getService().getValue(\"join\")', 'null'); 

尝试:

var r = response.replace('var joinstakqueries = getService().getValue("join")', 'null'); 
+0

我需要双引号tho ...他们在字符串我试图取代..我没有访问该字符串,所以我不能改变它。 – Skizit 2011-03-02 12:47:11

+0

@Skizit:没关系。双引号可以保留 - 只是在进行替换时不要在单引号字符串中使用双引号。否则它不会匹配。 – Saul 2011-03-02 12:50:45

+0

我试过你的例子和一个双引号..还没有修复它 – Skizit 2011-03-02 12:52:11