Closed study64 closed 3 years ago
¡Buenas! Gracias por reportarlo :)
Quizás no sea exactamente un bug, ya que string_split(2)
y string_n_split(3)
usan la función strsep(3)
, la cual considera a cada caracter como un separador distinto. En tu caso, sería lo mismo que incluir un solo "|"
:
string_split("Hola||Mundo", "||"); => ["Hola", "", "Mundo", NULL]
string_split("Hola||Mundo", "|"); => ["Hola", "", "Mundo", NULL]
Igual concuerdo en que es mucho mejor contar con la feature de usar delimitadores de varios caracteres, pueden usar el código que subí a #142 (les recomiendo agregarlo así como está a su biblioteca compartida ya que puede que no lo mergeemos hasta el próximo cuatri).
¡Saludos!
PD: Ojo con cómo están leyendo los arrays de strings, al parecer están confundiendo "array vacío" con null (de hecho, si a puts()
le pasan null rompe). Por si les sirve de ayuda, yo lo leería usando string_iterate_lines(2)
:
char** strings = string_split("Hola||Mundo", "||");
string_iterate_lines(strings, (void*) puts);
Si tenés razón es un vacío no un null lo que queda en la segunda posición. Justamente yo asumí que funcionaba como el split de js o el explode de php. Gracias
//Con un separador de un único caracter funciona bien char **partes = string_split("Hola|Mundo", "|"); puts(partes[0]);//Hola puts(partes[1]);//Mundo
//Cuando se utiliza un separador de mas de un caracter char **partes = string_split("Hola||Mundo", "||"); puts(partes[0]);//Hola puts(partes[1]);//null