如何在Javascript中按行和列分割字符串

问题描述 投票:0回答:6

我有一个带有两个分隔符的下面的字符串。“|”用于行,“*”用于列。我想知道如何在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|"
javascript
6个回答
2
投票

您可以使用 split 函数两次来创建嵌套数组:

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
投票

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
投票

这里已经有很多好的答案 - 这返回为具有行/列属性的单元格对象数组:

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
投票

如果您想一次性完成它,这应该创建一个表示数组/列的嵌套数组结构。它也非常粗糙,可能可以简化一点。

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
投票

也许有点老式,但效果也很好

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
投票

您可以使用多个分隔符进行分割:

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

© www.soinside.com 2019 - 2024. All rights reserved.