我正在尝试从以下字符串创建数组:
"[DHKSGFKDBF][JDKDFJ][NDKDHDLSJD]" // ["DHKSGFKDBF", "JDKDFJ", "NDKDHDLSJD"]
"[ADJDJKDFJ][JEJZJDUDU]" // ["ADJDJKDFJ", "JEJZJDUDU"]
"[ADJDJKDFJ]" // ["ADJDJKDFJ"]
有一种简单的方法吗?
答案 0 :(得分:2)
有很多方法可以做到这一点。最简单的方法是将外部的一个移开并拆分。
var str = "[DHKSGFKDBF][JDKDFJ][NDKDHDLSJD]"
var arr = str.slice(1,str.length-1).split('][');
console.log(arr);
答案 1 :(得分:0)
var str = "[DHKSGFKDBF][JDKDFJ][NDKDHDLSJD]"
var array = str.substring(1,str.length-1).split("][");
console.log(array);
导致:
["DHKSGFKDBF", "JDKDFJ", "NDKDHDLSJD"]
答案 2 :(得分:0)
一旦您检查了字符串的正确格式(以[
开始并以]
结尾的 ie ),则可以删除开头的[
和结束]
,然后除以][
,例如 eg
[
"[DHKSGFKDBF][JDKDFJ][NDKDHDLSJD]",
"[ADJDJKDFJ][JEJZJDUDU]",
"[ADJDJKDFJ]",
""
].forEach(str => {
console.log(splitStr(str));
});
function splitStr(str) {
if (str && str.length > 2 && str.charAt(0) == '[' && str.charAt(str.length - 1) == ']') {
return str.substring(1, str.length - 1).split('][');
}
return [];
}
答案 3 :(得分:0)
您可以用定界符(/\W+/g
替换所有非字母数字字符(,
),在定界符上拆分,然后在开头过滤掉空值(!v
)然后结束。
const inputs = [
"[DHKSGFKDBF][JDKDFJ][NDKDHDLSJD]", // ["DHKSGFKDBF","JDKDFJ","NDKDHDLSJD"]
"[ADJDJKDFJ][JEJZJDUDU]", // ["ADJDJKDFJ","JEJZJDUDU"]
"[ADJDJKDFJ]" // ["ADJDJKDFJ"]
]
const convert = s => s.replace(/\W+/g, ',').split(',').filter(v => !!v);
inputs.forEach(input => console.log(JSON.stringify(convert(input))));
.as-console-wrapper { top: 0; max-height: 100% !important; }
答案 4 :(得分:0)
您可以使用string.match
功能。
var str = "[DHKSGFKDBF][JDKDFJ][NDKDHDLSJD]";
console.log(str.match(/\[(.*?)\]/g).map(item => item.substring(1, item.length - 1)));