如何从字符串中查找数组?

dddzy1tm  于 2021-09-23  发布在  Java
关注(0)|答案(5)|浏览(362)

此问题已在此处找到答案

用于在方括号之间提取文本的正则表达式(15个答案)
三天前关门。

const str = "[1,2,3,4],5,6";

const getArray = (str) => {
...
return arr;
}

console.log(getArray(str));  //[1,2,3,4]
``` `[1,2,3,4]` 是所需的数组。
我怎样才能得到这个?
cidc1ykv

cidc1ykv1#

你可以用 RegEx 匹配中包含的字符串 [] ```
const str = "[1,2,3,4],5,6";

const getArray = (str) => {
arr = str.match('/[.*]/')[0]
return arr;
}

console.log(getArray(str));

2g32fytz

2g32fytz2#

你可以用 regex 用于提取由 [] 然后运行一个 map 用于消毒。检查这个-

const str = "[1,2,3,4],5,6";

const getArray = str => {
    const regex = /(\[([^\]]+)\])/;
    const match = regex.exec(str);

    return match?.[2] ? match[2].split(',').map(x => x.trim()) : [];
}

console.log(getArray(str));
m2xkgtsf

m2xkgtsf3#

您可以使用javascript方法lastindexof()来查找 [] .
这将为您提供介于两者之间的所有字符 [] .
然后可以使用split()方法转换数组。
使用map()和number可以将字符串转换为数字

const str = "[1,2,3,4],5,6";

function getArray(str){
  var myArray = str.substring(
    str.lastIndexOf("[") + 1, 
    str.lastIndexOf("]")
  );
  return myArray.split(",").map(Number);

}

console.log(getArray(str));
yiytaume

yiytaume4#

这将为您提供字符串中所有数组的数组。

const str = "[1,2,3,4],5,6";

const getArray = (str) => {
  const ans = []
  let stack = []
  let isStack = true
  for (let i = 0; i < str.length; i++) {
    if (str[i] == '[') {
      isStack = true;
    } else if (str[i] == ']') {
      isStack = false;
      ans.push(stack)
      stack = []
    } else if (isStack && str[i] != ',') {
      stack.push(parseInt(str[i]))
    }
  }
  return ans;
}

console.log(getArray(str)) // [ [ 1, 2, 3, 4 ] ]
console.log(getArray(str)[0]) // [ 1, 2, 3, 4 ]
omqzjyyz

omqzjyyz5#

假设str正好包含一对封闭方括号:

const getArray = (str) => {
  const idxStart = str.indexOf('[') + 1
  const idxEnd = str.indexOf(']')
  arr = str.slice(idxStart, idxEnd)
  return arr.split(',')

}

相关问题