Как разбить строку по строкам и столбцам в Javascript - PullRequest
0 голосов
/ 05 августа 2020

У меня есть нижняя строка с двумя разделителями. "|" используется для строк, а "*" используется для столбцов. Я хотел бы знать, как разделить эту строку по строкам и столбцам в JS Код

"1*264.75|2*4936.00|3*8230.76|4*8329.75|5*3106.25|6*3442.00|7*5122.50|10*77.00|11*7581.00|12*7573.25|13*3509.00|21*5246.50|24*4181.00|25*4961.25|52*34.00|"

Ответы [ 6 ]

2 голосов
/ 05 августа 2020

Вы можете использовать функцию разделения дважды, чтобы создать вложенный массив:

let str = "1*264.75|2*4936.00|3*8230.76|4*8329.75|5*3106.25|6*3442.00|7*5122.50|10*77.00|11*7581.00|12*7573.25|13*3509.00|21*5246.50|24*4181.00|25*4961.25|52*34.00|";


let arr = str.split("|").map(r => r.split("*"));

console.log(arr);
0 голосов
/ 05 августа 2020

Может немного старомодно, но работает так же хорошо

var a ="1*264.75|2*4936.00|3*8230.76|4*8329.75|5*3106.25|6*3442.00|7*5122.50|10*77.00|11*7581.00|12*7573.25|13*3509.00";

var b = a.split("|");

var c = [];
for (i = 0; i < b.length; i++) {
     c[i] = b[i].split("*");
}
0 голосов
/ 05 августа 2020

Если вы хотите go поверх него за один проход, это должно создать структуру вложенного массива, представляющую массивы / столбцы. Он также очень грубый, и его, вероятно, можно немного упростить.

const fullStr = "1*264.75|2*4936.00|3*8230.76|4*8329.75|5*3106.25|6*3442.00|7*5122.50|10*77.00|11*7581.00|12*7573.25|13*3509.00|21*5246.50|24*4181.00|25*4961.25|52*34.00|";

const arr = [[]];
for(let i = 0, str = ''; i < fullStr.length; i++){
  if(fullStr[i] == '*') {
    arr[arr.length - 1].push(str);
    str = '';
    continue;
  }
  if(fullStr[i] == '|') {
    arr[arr.length -1].push(str);
    // you could wrap this push statement in an if to determine if you are at the end of the string.
    arr.push([]);
    str = '';
    continue;
  }
  str += fullStr[i];
  
}
console.log(arr);
0 голосов
/ 05 августа 2020

Здесь уже много хороших ответов - это возвращается как массив объектов ячеек с атрибутами строки / столбца:

let mystring = "1*264.75|2*4936.00|3*8230.76|4*8329.75|5*3106.25|6*3442.00|7*5122.50|10*77.00|11*7581.00|12*7573.25|13*3509.00|21*5246.50|24*4181.00|25*4961.25|52*34.00|";


let cells = mystring.split("|");
let results = [];
for (let i = 0; i < cells.length; i++) {
  let cell = cells[i];
  let cellData = cell.split("*");
  results.push({
    row: cellData[0],
    col: cellData[1]
  })
}

console.log(results);
0 голосов
/ 05 августа 2020

const input = "1264.75|24936.00|38230.76|48329.75|53106.25|63442.00|75122.50|1077.00|117581.00|127573.25|133509.00|215246.50|244181.00|254961.25|52*34.00|"


// The filter is for removing empty rows

input.split("|").filter(val=>!!val).map(val => val.split("*").map(res=>parseFloat(res)))

Результат будет как


[[1264.75],[24936],[38230.76],[48329.75],[53106.25],[63442],[75122.5],[1077],[117581],[127573.25],[133509],[215246.5],[244181],[254961.25],[52,34]]

0 голосов
/ 05 августа 2020

Вы можете разделить с несколькими делимитерами с помощью.

const str = "1*264.75|2*4936.00|3*8230.76|4*8329.75|5*3106.25|6*3442.00|7*5122.50|10*77.00|11*7581.00|12*7573.25|13*3509.00|21*5246.50|24*4181.00|25*4961.25|52*34.00|"

const splitStr = str.split(/\*|\|/);

console.log(splitStr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...