如何从字符串中找到数组? [复制]
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));
【讨论】:
以上是关于如何从字符串中找到数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章