如果匹配一个字符串但不匹配另一个字符串,如何替换字符串中的字符?

时间:2019-08-28 21:08:40

标签: javascript json regex string

我有两个JSON值,我需要同时解析JSON值A,但不会相互干扰地解析值B,并且仍然能够解析。

A {\"\"Protestant\"\":[...]}] 解析后应该是{'"Protestant"':[...]}

和B {\"\":[...]] 解析后应该是{"":[...]}

虽然这是我不解析时想要的,但这不是解析前我想要的。 (因为json将“视为”字符串的结尾,并给出了P的错误)

我无法用硬代码来解决此问题,因为除了新教徒以外,其他问题还显示出这个问题

我的代码

response.data.replace(`{\\"`, `{"'`).replace('\\":', `'":`);

我知道我可以通过

resonse.data.replace(`{\\"\\":`,'{RANDOMSTRING:');

并在我更改A的字符串时使用该RANDOMSTRING作为占位符,但是想知道是否有一种更灵活的方法。

这就是我回来的内容(无法解析)

A =“”新教徒“”,B =“”。

是否有通过寻找{\"\"而不是{\"\":来做到这一点?

1 个答案:

答案 0 :(得分:0)

我认为可以通过在提供给someString.replace的函数而不是新值时使用选项来实现此目的。 该函数将获得匹配的字符串作为第一个参数。因此,在您的函数中,您可以检查要替换的值是否与第二个表达式匹配,并且如果输入的值与第二个表达式匹配,则返回的输入值保持不变。

在此处查找文档和示例:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter

注意:如果您控制要分析的数据源,则可能需要打补丁。根据您提供的数据样本,看起来数据源会产生真正破损的JSON,例如双引号等。