简体   繁体   English

如何将逗号和分号分隔的字符串拆分为二维数组

[英]How to split comma and semicolon separated string into a two dimensional array

Let's say I have a variable users that contains the following string of text where each user is separated by a semicolon and each attribute of each users is separated by a comma:假设我有一个变量users ,其中包含以下文本字符串,其中每个用户用分号分隔,每个用户的每个属性用逗号分隔:

Bob,1234,Bob@example.com;Mark,5678,Mark@example.com

How would I split this into a multidimensional array variable userArray that looks like this:我将如何将其拆分为如下所示的多维数组变量userArray

[
    [Bob,1234,Bob@example.com],
    [Mark,5678,Mark@example.com]
]

using JavaScript?使用 JavaScript?

You can do this with split() and map()你可以用split()map()来做到这一点

var str = 'Bob,1234,Bob@example.com;Mark,5678,Mark@example.com';
var result = str.split(';').map(e => e.split(','));
console.log(result)

You just have to split is twice.你只需要拆分两次。 First by ';'首先由';' , and then each element of the resulting array by ',' . , 然后是结果数组的每个元素',' Something like this:像这样的东西:

"Bob,1234,Bob@example.com;Mark,5678,Mark@example.com"
    .split(';')
    .map(function(sub) { 
        return sub.split(',') 
    });

Just run the above snippet in your browser console, and you'll see:只需在浏览器控制台中运行上述代码段,您就会看到:

[
  Array[3]0: "Bob"1: "1234"2: "Bob@example.com"length: 3__proto__: Array[0],
  Array[3]0: "Mark"1: "5678"2: "Mark@example.com"length: 3__proto__: Array[0]
]

you just do你只是做

 var users = 'Bob,1234,Bob@example.com;Mark,5678,Mark@example.com'; var userInfo = users.split(';'); for (var i = 0, len = userInfo.length; i < len; i++) { userInfo[i] = userInfo[i].split(','); } console.log('userInfo', userInfo);

You can split by semicolon first and then by comma.您可以先用分号分隔,然后再用逗号分隔。

 var str = 'Bob,1234,Bob@example.com;Mark,5678,Mark@example.com', array = str.split(';').map(function (a) { return a.split(','); }); console.log(array);

ES6 ES6

 var str = 'Bob,1234,Bob@example.com;Mark,5678,Mark@example.com', array = str.split(';').map(a => a.split(',')); console.log(array);

var arr = [];
var string = 'Bob,1234,Bob@example.com;Mark,5678,Mark@example.com';
var users = string.split(';')
for(var user in users)
      arr.push(users[user].split(','));
JSON.stringify(arr);

If you are looking for a one liner that puts every elements in an array.如果您正在寻找一个将每个元素放入一个数组的单行代码。

Here is a solution:这是一个解决方案:

b.split(';').map(e => e.split(',')).reduce((acc, cur) => cur.concat(acc), []).filter(e => !!e)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM