regex - Dividir por un carácter en JavaScript pero no por los contiguos
Aquí está el caso:
var stringExample = "hello=goodbye==hello";
var parts = stringExample.split("=");
Salida :
hello,goodbye,,hello
Necesito este resultado:
hello,goodbye==hello
Los caracteres contiguos/repetidos deben ser ignorados, solo toma el único "=" para dividir.
¿Quizás algún regex?
Respuesta #1
Puedes usar una regex:
var parts = stringExample.split(/\b=\b/);
\b verifica los límites de palabra.
Respuesta #2
Lo más probable es que la respuesta de @dystroy sea la que estás buscando. Pero si algún carácter que no sea alfanumérico (A-Z, a-z, 0-9 o _) pudiera rodear un "splitting ="), entonces su solución no funcionará. Por ejemplo, la cadena
It's=risqué=to=use =Unicode!=See?
sería dividido en
"It's", "risqué=to", "use Unicode!=See?"
Entonces, si necesitas evitar eso, normalmente usarías una afirmación de retroceso:
result = subject.split(/(?<!=)=(?!=)/); // but that doesn't work in JavaScript!
Entonces, aunque esto solo dividiría en = individuales, no puedes usarlo porque JavaScript no soporta la aserción de retroceso (?<!...).
Afortunadamente, siempre puedes transformar una operación split() en una operación global match() haciendo coincidir todo lo que está permitido entre delimitadores:
result = subject.match(/(?:={2,}|[^=])*/g);
te daré
"It's", "risqué", "to", "use ", "Unicode!", "See?"
