gpt4 book ai didi

javascript - 正则表达式在数组中查找对

转载 作者:行者123 更新时间:2023-11-30 09:21:13 25 4
gpt4 key购买 nike

我想解析那个字符串:

[[abc.d.2,mcnv.3.we],[abec.d.2,mcnv.4.we],[abhc.d.2,mcnv.5.we]]

为了有键值(JSON)

{
"abc.d.2": "mcnv.3.we",
"abec.d.2: "mcnv.4.we",
"abhc.d.2": "mcnv.5.we"
}

首先我想检查字符串是否可以被解析为key=>value。如果字符串包含对,我如何检查它?

谢谢

最佳答案

你可以尝试这样的事情:

方法一:

想法:

  • 更新正则表达式以包含更具体的字符。在您的情况下,字母数字和句点。
  • 从字符串中获取所有匹配的元素。
  • 所有奇数都是键,偶数匹配是值。
  • 循环匹配并创建一个对象。

const str = "[[abc.d.2,mcnv.3.we],[abec.d.2,mcnv.4.we],[abhc.d.2,mcnv.5.we]]";
const matches = str.match(/[\w\.\d]+/gi);

const output = {};

for(var i = 0; i< matches.length; i+=2) {
output[matches[i]] = matches[i+1];
}

console.log(output)


方法二:

想法:

  • 编写一个正则表达式来捕获每个单独的组:[...:...]
  • 然后去掉大括号[]
  • 使用逗号 , 分割字符串。
  • 第一部分是您的 key 。其次是您的值(value)。

const str = "[[abc.d.2,mcnv.3.we],[abec.d.2,mcnv.4.we],[abhc.d.2,mcnv.5.we]]";
const matches = str.match(/\[([\w\d\.,]*)\]/gi);
const output = matches.reduce((obj, match) => {
const parts = match.substring(1, match.length - 1).split(',');
obj[parts[0]] = parts[1];
return obj;
}, {})

console.log(output)

在上述方法中,您还可以包括 Map .迭代最初可能有点困惑,但您可以尝试。

const str = "[[abc.d.2,mcnv.3.we],[abec.d.2,mcnv.4.we],[abhc.d.2,mcnv.5.we]]";
const matches = str.match(/\[([\w\d\.,]*)\]/gi);
const output = matches.reduce((obj, match) => {
const parts = match.substring(1, match.length - 1).split(',');
obj.set(...parts)
return obj;
}, new Map())

for (const [k, v] of output.entries()) {
console.log(`Key: ${k}, value: ${v}`)
}

关于javascript - 正则表达式在数组中查找对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51502198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com