Estoy tratando de dividir cadenas en una matriz si hay un punto y coma ";" o un punto "." o dos puntos ":".
El problema es que me gustaría que la división se produjera justo después del separador, no antes. Este código funciona de otra manera, pero el separador está al comienzo de cada elemento de la matriz. ¿Cómo puedo hacer que el separador se convierta en el último carácter del elemento de matriz?
const arrayForSplitText = myString.split((/(?=[.;:])/gi));Ejemplo:
myString = "Hola. Me gustaría esto: dividirme con los separadores al final de cada elemento".
resultado actual:
["Hola", ". Me gustaría esto", ": divídame con los separadores al final de cada elemento", "."]
resultado deseado:
["Hola"., "Me gustaría esto:", "sepárame con los separadores al final de cada elemento".]
En lugar de mirar hacia adelante en busca del separador, mira hacia atrás para encontrarlo. Dado que parece que desea que los espacios después del separador también desaparezcan, si existen, agregue también un espacio opcional.
const myString = "Hello there. I would like this: split me with the separators at the end of each element." const arrayForSplitText = myString.split(/(?<=[.;:]) ?/gi); console.log(arrayForSplitText); Si no puede usar lookbehind, .match para cualquier cosa menos los separadores, seguido de los separadores, también funciona.
const myString = "Hello there. I would like this: split me with the separators at the end of each element." const arrayForSplitText = myString.match(/[^.;:]+[.;:]/g); console.log(arrayForSplitText); Para recortar también los espacios iniciales con .match se requerirá un patrón un poco más largo.
const myString = "Hello there. I would like this: split me with the separators at the end of each element." const arrayForSplitText = myString.match(/[^.;: ][^.;:]*[.;:]/g); console.log(arrayForSplitText);