【问题标题】:How to replace characters in a string if they match 1 string but not another string?如果字符串匹配1个字符串但不匹配另一个字符串,如何替换字符串中的字符?
【发布时间】:2019-08-28 21:08:40
【问题描述】:

我有两个JSON值,我需要同时解析JSON值A,同时解析值B,互不干扰,仍然可以被解析。

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

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

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

我无法通过硬编码来解决这个问题,因为这个问题出现在新教以外的其他事物上

我的代码

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

虽然我知道我可以做到这一点

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

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

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

A = ""新教"",B = ""。

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

【问题讨论】:

  • 你试过JSON.parse()吗?
  • 试试JSON.parse,例如let parsed = JSON.parse(response.data); console.log(parsed);
  • 在你的问题上转储一个前后字符串,他们可能会出现一些答案,谁知道呢。这不是魔法!!!!!!
  • 同意,解析它;只是想知道 - 就像{\\"\\"(?!:) 这个一样简单?

标签: javascript json regex string


【解决方案1】:

我认为这可以通过使用提供给someString.replace 的函数而不是新值时的选项来实现。 此函数将匹配字符串作为第一个参数。因此,在您的函数中,您可以检查要替换的值以匹配第二个表达式,如果它与您的第二个表达式匹配,则返回未更改的传入值。

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

注意:如果您可以控制解析的数据源,则可能需要补丁。根据您提供的数据示例,看起来该数据源生成了非常损坏的 JSON,例如双引号等。

【讨论】:

  • 数据不能固定,因为它是人口普查,为了完整性,它不能改变。不过,我会研究一下选项,谢谢。
  • 请及时更新您的问题 - 我的建议是否有助于使其发挥作用,如果是,请将我的回复标记为问题的答案。
猜你喜欢
  • 2021-07-11
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
  • 2015-08-17
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多