在 javascript 中出现的前两个逗号处拆分字符串

Split a string at the first two commas occuring in javascript

让我们考虑定义为 :

的变量 str
var str = "A, B, C, D, E, F"

要在逗号处拆分字符串,我会这样做:

str = str.split(",")
console.log(str)
// => ["A", "B", "C", "D", "E", "F"]

所以,如果我必须在前两个逗号处拆分它,我应该怎么做,这样输出就变成了:

// => ["A", "B", "C, D, E, F"]

您可以使用正则表达式匹配第一个非逗号部分,然后是第二个非逗号部分,然后是其他任何内容(字符串的其余部分):

var str = "A, B, C, D, E, F";
const [, ...matches] = str.match(/(\w+), (\w+), (.+)/);
console.log(matches);

您也可以使用 split 和负向后看,但并非所有地方都支持负向后看(并且在极少数环境中支持可变长度向后看):

var str = "A, B, C, D, E, F";
console.log(
  str.split(/(?<=^[^,]+(?:,[^,]+)?), /)
);

您可以拆分字符串,保留拆分分隔符并构建一个新的部分数组和连接部分。

function split(string, limit) {
    var parts = string.split(/(,\s*)/),
        result = [],
        i = 0;
    
    while (i < limit * 2) {
        result.push(parts[i]);
        i += 2;
    }
    result.push(parts.slice(limit * 2).join(''));
    return result;
}

console.log(split('A, B, C, D, E, F, G', 2));

你可以试试这个,它会return你需要的结果

-var yourString="A, B, C, D, E, F";

-var formattedString = yourString.split(",").join("\n");

可以这样使用splitreduce来完成:

const str = 'A, B, C, D, E, F';

const res = str
  .split(', ')
  .reduce((strs, str) => {
    // get three parts of an array
    let [partOne, partTwo, partThree] = strs;
    // if the first two parts isn't fill out
    if (!partTwo) {
      return [...strs, str];
    } else {
      // fill out the third part,
      // which can be 'undefined' at start.
      // if it is not 'undefined',
      // concatenate the string
      return partThree ? [partOne, partTwo, `${partThree}, ${str}`] : [...strs, str];
        }
  }, [])
 console.log(res);