【问题标题】:Parse in javascript {{1,2},{3,4}},{{1.1,1.2},{1.0, 1.0}, {1.3,1.3}}在 javascript {{1,2},{3,4}},{{1.1,1.2},{1.0, 1.0}, {1.3,1.3}} 中解析
【发布时间】:2012-06-20 12:17:36
【问题描述】:

我有一个类似 {{1,2},{3,4}}, {{1.1,1.2},{1.0, 1.0}, {1.3,1.3}} 的字符串 我需要得到一组对 {number, number} 的数组。

最好的方法是什么?

【问题讨论】:

  • 你想得到一个二维数组吗?
  • 您是创建字符串的人吗?还是来自其他地方?
  • 1) 是的,二维数组是合适的。 2)它来自其他地方。我尝试使用正则表达式。表达式 /\{.*\}(\{.*\})*/ 匹配 {{1,2},{3,4}},{{1.1,1.2} 和 {1.0, 1.0},{1.3,1.3 }}

标签: javascript regex parsing


【解决方案1】:

由于输入几乎看起来像数组语法,您可以将所有花括号替换为方括号以获得有效数组:

var string = '{{1,2}, {2,3}}';
JSON.parse(string.replace(/}/g, ']').replace(/\{/g, '['));
// >>> [[1,2],[2,3]]

请注意,我使用JSON.parse 来解析字符串。
如果您的输入包含多个{..},以逗号分隔,请添加额外的大括号:'[' + .. + ']'。否则,您会得到类似 result = [1,2],[4,5]; 的信息,但无法提供所需的结果。

【讨论】:

  • 只是在输入那个。 :-)
  • 谢谢!这行得通。当我看到这个字符串时,它在我看来就像 JSON,但我还没有想到用括号替换。
【解决方案2】:

您可以通过多种方式进行操作。您可以用方括号替换大括号,您可以自己构建一个解析器来查看每个字符并跟踪您是否打开或关闭了一个数组,或者您可以在字符串上运行多个循环,根据其中的模式将其拆分.

例如。第一个循环 - 在 }},{{ 上拆分,因为这只发生在顶层。

第二个循环 - 在 },{

上拆分每个

【讨论】:

    【解决方案3】:
    console.log(JSON.parse("["+("{{1,2},{3,4}}, {{1.1,1.2},{1.0, 1.0}, {1.3,1.3}}"
        .replace(/{/g,'[').replace(/}/g,']'))+"]"));
    

    【讨论】:

      【解决方案4】:

      你为什么不把这个 { 替换成这个 [ 而这个 } 替换成这个 ] 然后把它解析为一个 json

      【讨论】:

        猜你喜欢
        • 2011-10-30
        • 2016-05-19
        • 2018-01-12
        • 1970-01-01
        • 2017-02-16
        • 2010-10-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多