How to split a string into an array based on every FOUR commas?

后端 未结 3 1073
独厮守ぢ
独厮守ぢ 2021-01-06 23:21

so I\'m trying to split a string into an array based on the amount of commas, how do I do that? Say my string is as such;

var string = \"abc, def, ghi, jkl,         


        
相关标签:
3条回答
  • 2021-01-06 23:46

    I'd use .match instead of split - match (non commas, followed by a comma or the end of the string) 4 times:

    var string = "abc, def, ghi, jkl, mno, pqr, stu, vwx, yza";
    const result = string.match(/(?:[^,]+(?:,|$)){1,4}/g);
    console.log(result);

    • (?:[^,]+(?:,|$)){1,4} - Repeat, 1 to 4 times:
      • [^,]+ - Non comma characters
      • (?:,|$) - Either a comma, or the end of the string

    If you want to make sure the first character is not whitespace, lookahead for \S (a non-whitespace character) at the beginning:

    var string = "abc, def, ghi, jkl, mno, pqr, stu, vwx, yza";
    const result = string.match(/(?=\S)(?:[^,]+(?:,|$)){1,4}/g);
    console.log(result);

    0 讨论(0)
  • 2021-01-06 23:58

    You can use split and reduce also to achieve this :

    let array = str.split(", ").reduce((prev, curr, i) => {
          if(i%4 === 0){
             prev.push([]);
          }
          prev[prev.length - 1].push(curr);
          return prev;
       }, [])
    
    0 讨论(0)
  • 2021-01-07 00:12

    split the string at ,. Then create a generic chunk function which splits the array passed into chunks of size specified using Array.from()

    const str = "abc, def, ghi, jkl, mno, pqr, stu, vwx, yza",
          splits = str.split(/,\s*/),
          chunk = (arr, size) => Array.from({ length: Math.ceil(arr.length / size) },
                                  (_, i) => arr.slice(i * size, (i + 1) * size))
    
    console.log(JSON.stringify(chunk(splits, 4)))
    console.log(JSON.stringify(chunk(splits, 3)))

    0 讨论(0)
提交回复
热议问题