Разбить строку на первые две запятые в javascript - PullRequest
1 голос
/ 24 февраля 2020

Давайте рассмотрим переменную 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"]

Ответы [ 4 ]

5 голосов
/ 24 февраля 2020

Вы можете использовать регулярное выражение для сопоставления первой части без запятой, затем второй части без запятой, затем чего-либо еще (остальная часть строки):

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

Вы также можете сделать это с split и отрицательным lookbehind, но отрицательный lookbehind не поддерживается везде (а просмотр переменной длины поддерживается только в очень немногих средах):

var str = "A, B, C, D, E, F";
console.log(
  str.split(/(?<=^[^,]+(?:,[^,]+)?), /)
);
3 голосов
/ 24 февраля 2020

Вы можете разбить строку, сохранить разделители разделения и построить новый массив частей и соединенных частей.

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));
0 голосов
/ 03 марта 2020

Можно сделать с помощью split и reduce следующим образом:

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);
0 голосов
/ 24 февраля 2020

вы можете попробовать это, он вернет вам нужный результат

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

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

...