根据字符串创建字符串数组

时间:2020-09-25 14:10:07

标签: javascript arrays string

我正在尝试从以下字符串创建数组:

"[DHKSGFKDBF][JDKDFJ][NDKDHDLSJD]" // ["DHKSGFKDBF", "JDKDFJ", "NDKDHDLSJD"]
"[ADJDJKDFJ][JEJZJDUDU]"           // ["ADJDJKDFJ", "JEJZJDUDU"]
"[ADJDJKDFJ]"                      // ["ADJDJKDFJ"]

有一种简单的方法吗?

5 个答案:

答案 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)));