如何从字符串中找到数组? [复制]

Posted

技术标签:

【中文标题】如何从字符串中找到数组? [复制]【英文标题】:How to find the array from the string? [duplicate] 【发布时间】:2021-09-19 18:01:48 【问题描述】:
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] 是预期的数组。

我怎样才能得到这个?

【问题讨论】:

到目前为止你尝试过什么?你在哪里卡住了? 另外,数组是否总是应该只包含数字,或者您的输入字符串可能是,例如"lorem[1, a, true, key: value ], ipsum, dolor, sit" 或类似的东西? 请分享您的尝试。它有助于回答。 JSON.parse(str.match(/\[[^\]]+\]/g)) 【参考方案1】:

您可以使用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));

【讨论】:

【参考方案2】:

您可以使用 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));

【讨论】:

【参考方案3】:

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

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 ]

【讨论】:

【参考方案4】:

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

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

【讨论】:

【参考方案5】:

您可以使用RegEx 匹配[] 中包含的字符串

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

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


console.log(getArray(str));

【讨论】:

以上是关于如何从字符串中找到数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

从字符串指针数组中删除一个元素

关于C中的结构,如何将数据从结构复制到字符串数组

如何从数组中选择随机字符串并将其分配给变量? [复制]

如何删除最后一个字符(从数组创建字符串时的逗号)? [复制]

如何从多个数组中找到单个字符串?

如何使用分隔符数组在 Java 中使用多个分隔符拆分字符串? [复制]