0

Let's say we have the following strings:

const str1 = 'aabbcc';
const str2 = 'aabbccaaddaaaaeeff';

I need to split them in order to obtain the following result:

mySplitFunction(str1, 'aa')//<--- ['aa','bbcc']
mySplitFunction(str1, 'bb')//<--- ['aa','bb', 'cc']
mySplitFunction(str2, 'aa')//<--- ['aa','bbcc', 'aa','dd', 'aa','aa', 'eeff']
mySplitFunction(str2, 'dd')//<--- ['aabbccaa','dd', 'aaaaeeff']

How would you do it?

Loudrous
  • 1,039
  • 10
  • 29

2 Answers2

2

Try:

const str1 = 'aabbcc';
const str2 = 'aabbccaaddaaaaeeff';
function mySplitFunction(str, delimiter){
  return str.split(new RegExp(`(${delimiter})`)).filter(s => s)
}

console.log(mySplitFunction(str1, 'aa'))
console.log(mySplitFunction(str1, 'bb'))
console.log(mySplitFunction(str2, 'aa'))
console.log(mySplitFunction(str2, 'dd'))
Spectric
  • 30,714
  • 6
  • 20
  • 43
2

You could take the separator in parenteses and filter the result to omit empty strings.

const
    split = (string, separator) => string
        .split(new RegExp(`(${separator})`))
        .filter(Boolean),
    str1 = 'aabbcc',
    str2 = 'aabbccaaddaaaaeeff';

console.log(...split(str1, 'aa')); // ['aa','bbcc']
console.log(...split(str1, 'bb')); // ['aa','bb', 'cc']
console.log(...split(str2, 'aa')); // ['aa','bbcc', 'aa','dd', 'aa','aa', 'eeff']
console.log(...split(str2, 'dd')); // ['aabbccaa','dd', 'aaaaeeff']
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392