2

我有一个字符串看起来像:

var myString= '{"key1":"value1", "key2":"value2", "key3":"value3"}';

我想要的是仅从 value3 中删除双引号和其他特殊字符 ...例如,有时我们的字符串如下所示:

var myString= '{"key1":"value1", "key2":"value2", "key3":"This is "value" with some special chars etc"}';

请注意,我不想在冒号之后和之前删除双引号,同样我也不想删除最后一个双引号。我只想修改字符串,使其变为:

var myString = '{"key1":"value1", "key2":"value2", "key3":"This is value with some special chars etc"}';
4

3 回答 3

2

简单的...

var myNewString = eval( '('+ myString +')');

var toBeEscaped = myNewString.key3;

var escapedString = doYourCleanUpStuff(toBeEscaped);

myNewString.key3 = escapedString;

myNewString = JSON.stringify(myNewString);

================

我做了什么?

1) 您的字符串看起来像有效的 JSON。

2) 将其转换为 JSON 对象。(使用eval()

3)检索值key3并将其捕获到某个临时变量中。

4)用这个临时变量做清理工作。

5) 将清理后的临时变量分配回 key3。

6) 将 JSON 字符串化。

不要用数组操作和拆分函数到处打架,尤其是当有更简单的方法时:)

于 2012-07-27T14:02:16.967 回答
0

您可能希望将 Arraymap函数与 stringreplace函数结合使用。

要使用该replace函数,您可能需要使用正则表达式。例如,以下正则表达式将不立即删除冒号后的双引号:[^:]".

要替换字符串数组中不紧跟冒号的每个引号,您可以这样写:

var myString= '{"key1":"value1", "key2":"value2", "key3":"value3"}';
var modified = myString.map(function(s) { return s.replace(/[^:]"/g, ''); });

对正则表达式进行自己的修改以匹配要删除的字符。

请参阅http://www.addedbytes.com/cheat-sheets/regular-expressions-cheat-sheet/

于 2012-07-27T13:56:27.833 回答
0

我想到的第一件事就是隔离你想要的价值。

你可以.Split()为你想要的价值

var myString = '{"key1":"value1", "key2":"value2", "key3":"value3"}';var n=str.split(" ");
var key3Value = str.split(//根据你的值);

//在你的 key3Value 上运行 .replace() 来替换你的双引号等。

//重新声明myString以包含更新后的key3Value

抱歉,目前没有时间完成代码,我相信他们的答案比我的更好/更短。只是想将此作为一个选项。

于 2012-07-27T14:02:35.367 回答