【问题标题】:Having Issue on Pushing Strings Between Parantsis Into Array of Arrays在将 Parantsis 之间的字符串推入数组数组时遇到问题
【发布时间】:2020-04-27 18:33:07
【问题描述】:

我正在尝试创建一个这样的数组数组

[
  ["-0.75_-1.25_-1.75_-2.25"],
  ["-0.75_-1.25_-1.75_-2.25"]
]

来自类似的字符串:

"-9.00_-6.50,-6.00_+6.00(-0.75_-1.25_-1.75_-2.25)(-0.75_-1.25_-1.75_-2.25)"

通过推入( ) 之间的所有字符串。我使用.match(/[^()]+/g) 正则表达式尝试了这个,但这将所有内容添加到数组中,它只是一个像

的数组
[
  [
    "-9.00_-6.50,-6.00_+6.00",
    "-0.75_-1.25_-1.75_-2.25",
    "-0.75_-1.25_-1.75_-2.25"
  ]
]

你能告诉我如何解决这个问题吗?

var data = "-9.00_-6.50,-6.00_+6.00(-0.75_-1.25_-1.75_-2.25)(-0.75_-1.25_-1.75_-2.25)"; 
var dataarr = [];
dataarr.push(data.match(/[^()]+/g));
console.log(dataarr);

【问题讨论】:

  • (?<=\()[^)]+(?=\)) 的匹配组成数组["-0.75_-1.25_-1.75_-2.25", "-0.75_-1.25_-1.75_-2.25"]。将其每个元素 e 转换为 [e] 很简单,但我不知道您为什么要这样做。
  • 检查我的答案!你可以使用正则表达式来解决。
  • @xdeepakv,提交答案时,OP 会通知 SO,因此您的评论是多余的。此外,所有答案都使用正则表达式。

标签: javascript jquery regex


【解决方案1】:

您可以对匹配的结果进行切片,使用包装映射字符串并在数组中获取数组。

var data = "-9.00_-6.50,-6.00_+6.00(-0.75_-1.25_-1.75_-2.25)(-0.75_-1.25_-1.75_-2.25)",
    result = data
        .match(/[^()]+/g)
        .slice(1)
        .map(s => [s]);

console.log(result);

【讨论】:

    【解决方案2】:

    您可能不需要splitmap 循环。您只能使用正则表达式。只需创建一个match all 函数。

    function matchAll(re, str) {
      let result = [];
      let m = null;
      do {
        m = re.exec(str);
        if (m) {
          result.push(m[1]);
        }
      } while (m);
      return result;
    }
    

    function matchAll(re, str) {
      let result = [];
      let m = null;
      do {
        m = re.exec(str);
        if (m) {
          result.push(m[1]);
        }
      } while (m);
      return result;
    }
    
    const s =
      "-9.00_-6.50,-6.00_+6.00(-0.75_-1.25_-1.75_-2.25)(-0.75_-1.25_-1.75_-2.25)";
    const re = /\((.+?)\)/g;
    console.log(matchAll(re, s));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-25
      • 2017-02-24
      • 2013-03-27
      相关资源
      最近更新 更多