Estoy tratando de dividir una cadena por espacio pero mantengo el espacio después de cada elemento. Entonces 'This is a string' se convertiría en ['This ', 'is ', 'a ', 'string'] . La cadena de entrada podría contener palabras, números o caracteres especiales.
Ahora mismo tengo:
var words = text.split(/(\w+\s)/).filter(x => x !== ''); Lo anterior funciona, pero la división de expresiones regulares le da ['This ', '', 'is ', '', 'a ', '', 'string'] y requiere el uso de .filter para eliminar los elementos de cadena vacíos. Apuesto a que hay una mejor expresión regular, pero no estoy lo suficientemente familiarizado con la expresión regular para resolverlo.
Puede usar un lookbehind como la expresión regular para dividir, de modo que el delimitador no use ningún carácter en la cadena.
const text = 'This is a string'; const words = text.split(/(?<=\s)/); console.log(words);