【问题标题】:How do I parse a string with brackets into array of arrays?如何将带括号的字符串解析为数组数组?
【发布时间】:2019-10-23 06:31:16
【问题描述】:

我收到一个带有括号的字符串,需要将其解析为数组数组。此外,元素之间没有逗号。

我收到类似于:

[[[a] b] c [d]]

并需要将其转换为:

[[['a'], 'b'], 'c', ['d']

我尝试用括号和引号替换所有括号,但这不起作用。例如:[[a] b] 变为 ['['a'] b]

我已经尝试过 JSON.parse,但在此之前我需要帮助做几件事

  1. 我需要在所有正确的地方添加逗号
  2. 我需要将括号内的值用引号括起来。

【问题讨论】:

  • 该数据源是否可以改为提供 JSON?如果可能的话,这将比编写自己的自定义解析器更容易。
  • 请包含您为自行解决此问题而编写的任何代码尝试。此外,您需要提供预期输入的边界。这些项目总是只有单个字母吗?
  • @Joseph 我希望!处理这件事真的很痛苦。

标签: javascript node.js regex replace string-parsing


【解决方案1】:

使用正则表达式在任何不包含空格或方括号的序列周围加上引号,并用逗号替换所有空格。然后将其解析为 JSON。

let str = '[[[a] b] c [d]]';
let json = str.replace(/[^ \[\]]+/g, '"$&"').replace(/ +/g, ',');
console.log(json);
let arr = JSON.parse(json);
console.log(arr);

【讨论】:

  • 这也是我想到的建议,但如果数组中的项目包含空格,它将不起作用。不过,在这种情况下,我不确定真正可以做什么。
  • 如果有空格就不能先进去去掉空格再正常执行吗? @TylerRoper
  • 除非有一些转义语法,否则这是不可能的,因为空格是分隔符。
  • 如果问题有更多详细信息,请将它们放在问题中,而不是 cmets。
  • @barmar 这很有帮助。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2010-09-07
  • 2019-02-01
  • 2019-01-24
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
  • 2017-01-27
  • 2021-11-05
相关资源
最近更新 更多