Pero buscas algo en particular? Porque creo que las funciones que podrían complicarse son match y find (por las variadas formas que hay de usarlas). El resto (len, lower, rep, reverse, sub...) son muy sencillas.
Gracias por responder, ya descubri el código para divirlo en palabras, en pc imprimiría una palabra por línea, ahora solo me faltaría uno para cambiar un caracter en una posición determinada
s ="Gracias a todos por ayudarme con los strings"for w instring.gmatch(s, "%a+")doprint(w)end
En LuaDEV específicamente tienes la función string.explode, que te permite partir un string usando un separador cualquiera. Siguiendo tu ejemplo:
s ="Gracias a todos por ayudarme con los strings"
palabras =string.explode(s," ")--El separador sería el espacio en blanco
Eso te devolvería una tabla conteniendo una palabra por entrada (tabla[1]="Gracias", tabla[2]="a", tabla[3]= "todos" y así...).
Cambiar un caracter es muy sencillo, para no complicarme la vida yo declararía una función universal:
function replace(str,car,pos)return str:sub(1,pos-1)..car..str:sub(pos+1)end--str => la cadena original--car => el caracter (o caracteres) a usar en la sustitución--pos => la posición donde se insertará el cambio
Y listo... haciendo replace(s,"#",14) por ejemplo, devolvería "Gracias a tod#s por ayudarme con los strings " ;)
Para borrar una letra puedes usar la misma función que dejé, expecificando una cadena vacía:
txt ="Soy un string xD"
txt = replace(txt,"",1)--txt ahora sería "oy un string xD"
Siendo una palabra completa... una de dos: o modificas la función de arriba para que sepa dónde inicia y dónde termina la palabra que quieres eliminar (modo avanzado digamos) o usas la función string.gsub:
txt ="Yo tb soy un string xDD"
txt = txt:gsub("tb","")--Ahora txt sería "Yo soy un string xDD"
Este sería el modo fácil, aunque tiene un potencial problema: si tienes varias veces la misma palabra, pero sólo quieres sustuir la última, no sería posible directamente (habría que desarrollar otra función... eso te lo dejo para que te diviertas xD).
Lo mejor en estos caso es que vayas probando todas las funciones, y que veas que devuelven. Experimenta con ellas. Así es como lograrás entenderlo, o por lo menos para mi.
Pero buscas algo en
Pero buscas algo en particular? Porque creo que las funciones que podrían complicarse son match y find (por las variadas formas que hay de usarlas). El resto (len, lower, rep, reverse, sub...) son muy sencillas.
Busco
Busco algo así como para dividir strings en palabras o para substituir una letra por otra.
Saludos!
By Jorge_97
string.sub(string,a,b)
Retorna un sufijo de una cadena.
string: Cadena
a: Caracter a iniciar
b: Carácter a terminar (Por defecto es el último, es decir si lo dejas vacío)
Ejemplo:
txt="Gato"
os.message(txt:sub(2,3))
--Esto devolvería "at"
Un saludo
Dos años en SCENEBETA
Click aquí para ver la Entrada de Bitácora.
Gracias por responder
Gracias por responder, ya descubri el código para divirlo en palabras, en pc imprimiría una palabra por línea, ahora solo me faltaría uno para cambiar un caracter en una posición determinada
Saludos!
En LuaDEV específicamente
En LuaDEV específicamente tienes la función string.explode, que te permite partir un string usando un separador cualquiera. Siguiendo tu ejemplo:
Eso te devolvería una tabla conteniendo una palabra por entrada (tabla[1]="Gracias", tabla[2]="a", tabla[3]= "todos" y así...).
Cambiar un caracter es muy sencillo, para no complicarme la vida yo declararía una función universal:
Y listo... haciendo replace(s,"#",14) por ejemplo, devolvería "Gracias a tod#s por ayudarme con los strings
" ;)
Muchisimas
Muchisimas gracias, la verdad es que no se me ocurria una forma de hacerlo...
PD: ¿Como puedo hacer para borrar un trozo del string, por ejemplo una palabra o una letra?
Saludos!
Para borrar una letra puedes
Para borrar una letra puedes usar la misma función que dejé, expecificando una cadena vacía:
Siendo una palabra completa... una de dos: o modificas la función de arriba para que sepa dónde inicia y dónde termina la palabra que quieres eliminar (modo avanzado digamos) o usas la función string.gsub:
Este sería el modo fácil, aunque tiene un potencial problema: si tienes varias veces la misma palabra, pero sólo quieres sustuir la última, no sería posible directamente (habría que desarrollar otra función... eso te lo dejo para que te diviertas xD).
Con string.sub, por
Con string.sub, por ej;
mi_string = string.sub(mi_string, 1, 5)
Mmm...
Lo mejor en estos caso es que vayas probando todas las funciones, y que veas que devuelven. Experimenta con ellas. Así es como lograrás entenderlo, o por lo menos para mi.
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).
Ok
Vale seguire tu consejo, voy a ver mas ventanitas de error :)
Saludos!
Smokesilence
Sirve para registrar una cadena o grupo de carácteres de variables.
Y más...
Dividir strings, buscar ciertos string, formatear strings, obtener ciertos substrings, ect... o como pone en la documentación de Lua:
Esta biblioteca proporciona funciones genéricas de manejo de strings, tales como encontrar y extraer substrings y detectar patrones
Por ejemplo, para un corrector ortográfico o un teclado, se podría utilizar la función
string.levenshtein()
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).