Marzo 20, 2012, 07:00:20 PM Ultima modificación: Marzo 21, 2012, 04:33:44 AM por Jucarave
Hola a todos, una pequeña duda que me entro.

Estaba haciendo unas cosas para ahorrar un poco de variables, pero me entro la duda, se puede pasar un string a un array?

por ejemplo convertir "Hola;Como;Estan;Todos" a un array de cuatro espacios separados por puntos y comas (u otro delimitador):

array[0] = "Hola";
array[1] = "Como";
array[2] = "Estan";
array[3] = "Todos";

por ejemplo en PHP puedes usar "explode(string,limitador)" y te da este resultado, pero no se si GML tenga una función para eso?

Si no me tocara hacerlo de otro modo menos practico.



Saludos y gracias.

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.


Para eso tendrías que crear tu propio script en base a todas las funciones de string, ir copiando las string a el array a medida que se encuentran los ";" y borrar la sección ya encontrada (se puede, ya lo he hecho), te haria un ejemplo pero no quiero quitarte la diversión de hacerlo =P
Saludos!




De hecho yo también lo hice así  ;D pero como dije, me entro la duda de si había alguna funcion que ya lo hiciera  :-[ En fin...

supongo que será seguir de este modo, no obstante si alguien mas tiene otra idea, sera bienvenida


Saludos.

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.


Hola Makero Jucarave:

  Básicamente la forma usada por el makero Texic y por ti es la común.

  Ahora, si quieres extraer un texto por palabras, tendrías que entrar y delimitar las palabras por comas u otro separador. Algo realmente engorroso. La idea sería hacer una función como la de PHP a la cual le pases la cadena de texto más "los separadores". De esta forma puedes dividir un texto por el separador que prefieras incluso más de un separador. (El espacio en blanco, un salto de línea, la coma, el punto y coma, et.) 

  Interesante la idea para un "script".  :D

  Disculpen las molestias causadas y hasta la próxima.


Hace un par de años me había surgido la misma necesidad, por lo que cree éste script:


//Creado por eduardo960
//argument0 -> String
//argument1 -> Char

var n, str_f, str, str_tmp, char;

n = 0
str_f = 0
str = argument0
str_tmp = str
char = argument1

while(str_tmp != '')
{
    str_f = string_pos(char,str_tmp)
    if str_f
    {
        _argumento[n] = string_copy(str_tmp,1,str_f - 1)
        if str_f = string_length(str_tmp)
        {
            if _argumento[n] != '' and _argumento[n] != char {n += 1}
            return n
        }
        str_tmp = string_delete(str_tmp,1,str_f)
    }
    else
    {
        _argumento[n] = str_tmp
        str_tmp = ''
    }
    if !string_pos(char,_argumento[n])
    {
        if _argumento[n] != '' and _argumento[n] != char
        {
            n += 1
        }
    }
}

return n


No es la mejor forma de hacerlo pero al final lo he venido usando en todos los editables en los que lo necesitaba, la función devuelve el número de string obtenidos y los almacena en la variable local "_argumento", para copiar los datos a otra variable, podría ser así:


var i, n;
string = '1|2|3|4|5|6|7|8|9|0|'
n = argument_separation_char(string, '|')
for(i = 0; i < n; i += 1)
{
    arreglo[i] = _argumento[i]
}


¡Saludos!
W.I.P:            RaceBall, SceneChat, MMOPTG
Contacto:    Twitter, Facebook

Ohh, eduardo me ha complementado la idea :P , ya había preparado la función ahora, pero combinando unas cosas con lo que dijo eduardo creo que cumple del todo la expectativa :)


Gracias, doy por solucionado esto.


Saludos

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.