используйте str.split () при каждом втором появлении нашего разделителя - PullRequest
3 голосов
/ 24 января 2020

У меня есть ряд переменных строк, которые мне нужно превращать в массивы при каждом втором появлении \n, для простоты рассмотрим следующий пример:

const str = 'banana\napple\nmango\n3.5'

//I have tried and failed with:

const arr = str.split(/(^\n)+\n(^\n)+/)

// Result should be:
// const arr = ['banana\napple', 'mango\n3.5']

Нужно ли использовать все oop здесь или как?

Ответы [ 2 ]

2 голосов
/ 24 января 2020

Вы можете взять match вместо split, взяв какой-нибудь неразрывный символ, разрывающий символ и другой непробиваемый символ.

const
    string = 'banana\napple\nmango\n3.5',
    result = string.match(/[^\n]+\n[^\n]+/g);
    
console.log(result);
0 голосов
/ 24 января 2020

Черт, это уродливый подход:

 
let t1 = performance.now();

const result = 'banana\napple\nmango\n3.5'
    .split('\n')
    .map((str, i, arr) => (i % 2) === 0 ? str + '\n' + arr[i+1] : null )
    .filter((str) => str !== null);
    
let t2 = performance.now();
console.log(result, t2-t1 + 'μs');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...