【问题标题】:Split a string at the first two commas occuring in javascript在 javascript 中出现的前两个逗号处拆分字符串
【发布时间】:2020-02-24 09:01:03
【问题描述】:

让我们考虑一个变量 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"]

【问题讨论】:

    标签: javascript split comma


    【解决方案1】:

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

    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(/(?<=^[^,]+(?:,[^,]+)?), /)
    );

    【讨论】:

    • 我从来没有做过const [, ...matches] = str.match(...)。这比我通常用于解决该问题的技术要好得多!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        可以通过这种方式使用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);

        【讨论】:

          猜你喜欢
          • 2021-10-04
          • 1970-01-01
          • 2015-10-04
          • 2017-01-05
          • 2022-11-27
          • 1970-01-01
          • 1970-01-01
          • 2015-08-15
          • 2015-03-07
          相关资源
          最近更新 更多