sisoputnfrba / so-commons-library

TADs de uso comun en aplicaciones desarrolladas en C
http://sisoputnfrba.github.io/so-commons-library/
GNU General Public License v3.0
106 stars 174 forks source link

String: Usar delimitadores de más de un caracter en split #142

Closed RaniAgus closed 3 years ago

RaniAgus commented 3 years ago

Resuelve #141

Ahora tiene un comportamiento 100% igual a [split en JS](https://www.w3schools.com/jsref/jsref_split.asp#:~:text=The%20split()%20method%20is,not%20change%20the%20original%20string.):

RaniAgus commented 3 years ago

Cambiado lo del while, dejé la condición adentro del mismo y dejé en un if el comportamiento cuando el separador es igual a "":

while ((end = strstr(start, separator)) != NULL && !is_last_token(index)) {
    if (string_is_empty(separator)) {
        if (string_length(start) > 1)
            end = start + 1;
        else
            break;
    }
    _string_array_push(&substrings, string_substring_until(start, end - start), index++);
    start = end + string_length(separator);
}

También lo armé para que el while siempre corte al hallar el último token, por lo que a la última línea no hace falta ponerle el if (que quedaba feo):

_string_array_push(&substrings, string_duplicate(start), index);

PD: Perdón Gasti tardé un par de días en darme cuenta que salvo por ese cambio ya estaba aprobado, mala mía