Строка в несколько строк в массиве - PullRequest
0 голосов
/ 22 февраля 2020

Я долго не кодировал и столкнулся с первой проблемой, которую я просто не могу понять.

У меня есть строка "XX|Y1234$ZT|QW4567" Мне нужно удалить и $, и | и pu sh в массив, подобный этому ['XX', 'Y1234', 'ZT', 'QW4567'].

Я пытался использовать .replace и .split всеми возможными способами

 var array = "XX|Y1234$ZT|QW4567"
 var array2 = [];

 array = array.split("$");

 for(i = o; i <array.length; i++)    
   var loopedArray = array[i].split("|")
   loopedArray.push(array2);        
 } 

Я пробовал несколько других вещей, но мне потребовалось бы некоторое время, чтобы отложить их все.

Ответы [ 4 ]

3 голосов
/ 22 февраля 2020

Вы можете передать Regex в .split(). https://regexr.com/ - отличный инструмент для работы с Regex.

// Below line returns this array ["XX", "Y1234", "ZT", "QW4567"]
// Splits by $ and |
"XX|Y1234$ZT|QW4567".split(/\$|\|/g); 
1 голос
/ 22 февраля 2020

Ваш фрагмент кода близок, но вы перепутали свои переменные в операторе push.

var array = "XX|Y1234$ZT|QW4567"
var array2 = [];

array = array.split("$");

for (i = 0; i < array.length; i++) {
  var loopedArray = array[i].split("|")
  array2.push(loopedArray);
}
array2 = array2.flat();

console.log(array2);

Однако это можно переписать намного чище, используя flatMap. Также обратите внимание на использование let вместо var и одинарных кавычек ' вместо двойных кавычек ".

let array = 'XX|Y1234$ZT|QW4567'
let array2 = array
  .split('$')
  .flatMap(arrayI => arrayI.split('|'));

console.log(array2);

И, наконец, split уже поддерживает несколько разделителей при использовании регулярных выражений:

let array = 'XX|Y1234$ZT|QW4567'
let array2 = array.split(/[$|]/);

console.log(array2);
0 голосов
/ 22 февраля 2020

Если вы вызовете разделение с двумя параметрами | и $, вы получите сильный массив, который разделяется заданными символами.

var array = "XX|Y1234$ZT|QW4567";
var splittedStrings = array.Split('|','$');
foreach(var singelString in splittedStrings){
   Console.WriteLine(singleString);
}

вывод :

XX
Y1234
ZT
QW4567

0 голосов
/ 22 февраля 2020

Вы можете сделать это следующим образом:

"XX|Y1234$ZT|QW4567".replace('$','|').split('|')

Будет выдано:

["XX", "Y1234", "ZT", "QW4567"]
...