Digamos que tenemos las siguientes cadenas:
const str1 = 'aabbcc'; const str2 = 'aabbccaaddaaaaeeff';Necesito dividirlos para obtener el siguiente resultado:
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']¿Como lo harias?
Probar:
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'))Puede tomar el separador entre paréntesis y filtrar el resultado para omitir cadenas vacías.
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']