Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: String a Array (SOLUCIONADO)  (Leído 1118 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Jucarave

  • Ganador Proyecto Nexo
  • Adicto
  • *
  • Puntos: 435
  • Mensajes: 493
  • Agradecido: 31 veces
  • Sexo: Masculino
  • De regreso con un nuevo proyecto
    • Ver Perfil
    • Jucarave Games
en: Marzo 20, 2012, 07:00:20 pm
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.
« última modificación: Marzo 21, 2012, 04:33:44 am por Jucarave »

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

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Texic

  • Moderadores globales
  • Legendario
  • *
  • Puntos: 1213
  • Mensajes: 2.158
  • Agradecido: 3 veces
  • Sexo: Masculino
  • I Have The Fire!
    • Ver Perfil
Respuesta #1 en: Marzo 20, 2012, 07:07:41 pm
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!




 


Desconectado Jucarave

  • Ganador Proyecto Nexo
  • Adicto
  • *
  • Puntos: 435
  • Mensajes: 493
  • Agradecido: 31 veces
  • Sexo: Masculino
  • De regreso con un nuevo proyecto
    • Ver Perfil
    • Jucarave Games
Respuesta #2 en: Marzo 20, 2012, 07:17:35 pm
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.

 


Desconectado ferhand

  • Adicto
  • *
  • Puntos: 273
  • Mensajes: 476
  • Sexo: Masculino
    • Ver Perfil
Respuesta #3 en: Marzo 20, 2012, 11:03:26 pm
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.

 


Desconectado eduardo960

Respuesta #4 en: Marzo 21, 2012, 02:23:24 am
Hace un par de años me había surgido la misma necesidad, por lo que cree éste script:

Código: [Seleccionar]
//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í:

Código: [Seleccionar]
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
 


Desconectado Jucarave

  • Ganador Proyecto Nexo
  • Adicto
  • *
  • Puntos: 435
  • Mensajes: 493
  • Agradecido: 31 veces
  • Sexo: Masculino
  • De regreso con un nuevo proyecto
    • Ver Perfil
    • Jucarave Games
Respuesta #5 en: Marzo 21, 2012, 04:32:33 am
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.