Создание массива строк из строки

#javascript #arrays #string

#javascript #массивы #строка

Вопрос:

Я пытаюсь создать массивы из следующих строк:

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

Есть простой способ сделать это?

Ответ №1:

Существует множество способов сделать это. Проще всего было бы удалить внешний и разделить.

 var str = "[DHKSGFKDBF][JDKDFJ][NDKDHDLSJD]"
var arr = str.slice(1,str.length-1).split('][');
console.log(arr);  

Комментарии:

1. …или наоборот: .split(/[[]] /).slice(1,-1)

Ответ №2:

 var str = "[DHKSGFKDBF][JDKDFJ][NDKDHDLSJD]"
var array = str.substring(1,str.length-1).split("][");
console.log(array);
  

приводит к:

 ["DHKSGFKDBF", "JDKDFJ", "NDKDHDLSJD"]
  

Ответ №3:

Вы можете заменить все не алфавитно-цифровые символы ( /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:

Вы можете использовать string.match функцию.

 var str = "[DHKSGFKDBF][JDKDFJ][NDKDHDLSJD]";
console.log(str.match(/[(.*?)]/g).map(item => item.substring(1, item.length - 1)));  

Ответ №5:

После того, как вы проверили правильный формат строки (т. Е. Начиная с [ и заканчивая ] ), вы можете удалить начало [ и закрытие ] и разделить на ][ , например:

 [
  "[DHKSGFKDBF][JDKDFJ][NDKDHDLSJD]",
  "[ADJDJKDFJ][JEJZJDUDU]",
  "[ADJDJKDFJ]",
  ""
].forEach(str => {
  console.log(splitStr(str));
});

function splitStr(str) {
  if (str amp;amp; str.length > 2 amp;amp; str.charAt(0) == '[' amp;amp; str.charAt(str.length - 1) == ']') {
    return str.substring(1, str.length - 1).split('][');
  }
  return [];
}