Simplificar código

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Hola a todos,

Tengo una duda sobre una línea de código.

Cree una aplicación que genera datos aleatorios y luego los importa a una Base de Datos de manera autómatica. Mi duda va sobre los Nombres y Correos, ya que quiero asociar los nombres aleatorios a los correos y para esto necesito quitar los Acentos (Andrés => andres). Esto ya lo pude hacer, pero con un código muy feo:

1 - Obtengo el nombre desde la columna 1 del Grid y le quito los espacios:

Código: Seleccionar todo

name = String.Replace(Grid.GetCellText("Registros", nRow, 1), " ", "", false);

2 - Reemplazo todas las vocales con acento: Este código lo encuentro feo, quisiera saber si alguien sabe como mejorarlo.

Código: Seleccionar todo

newname = String.Replace(String.Replace(String.Replace(String.Replace(String.Replace(String.Replace(name, "á", "a"),"é", "e"),"í", "i"),"ó", "o"),"ú", "u"),"ñ", "n");

3 - En esta línea añado la acción y limito el rango de los datos a 12 dígitos. Además de colocar el texto en minúsculas.

Código: Seleccionar todo

Grid.SetCellText("Registros", nRow, 3, String.Lower(String.Mid(newname, 1, 12)).."@"..correo(1), false);
Queda así:

Imagen

funciona bien, pero si alguien me ayuda para modificar la línea del código "2" se lo agradecería mucho. Me sirve para hacer test en otras aplicaciones.

Saludos. :)
la función string.gsub te permite buscar y reemplazar patrones en una cadena de texto
local sin_tildes = string.gsub("Teléfono", "[áéíóúÁÉÍÓÚ]", "")
[áéíóúÁÉÍÓÚ] busca todas las vocales con tilde en la cadena
Agotaras123 escribió:
16 Dic 2022 22:56
la función string.gsub te permite buscar y reemplazar patrones en una cadena de texto
local sin_tildes = string.gsub("Teléfono", "[áéíóúÁÉÍÓÚ]", "")
[áéíóúÁÉÍÓÚ] busca todas las vocales con tilde en la cadena
Perfecto, amigo Douglas. Se agradece mucho. :yes:
Agotaras123 escribió:
16 Dic 2022 22:56
la función string.gsub te permite buscar y reemplazar patrones en una cadena de texto
local sin_tildes = string.gsub("Teléfono", "[áéíóúÁÉÍÓÚ]", "")
[áéíóúÁÉÍÓÚ] busca todas las vocales con tilde en la cadena
Estuve testeando, y lo que hace es eliminar las letras con tilde. De todas maneras tendría que hacerlo con cada letra (áéíóúñ).
R Landaeta escribió:
16 Dic 2022 05:43
Necesito quitar los acentos (Andrés => Andres). Esto ya lo pude hacer, pero con un código muy feo.
Saludos! :pc:

Para eliminar acentos de las mayúsculas y minúsculas, usa esta función:
function remove_accents(a)
	local b={["á"]="a",["é"]="e",["í"]="i",["ó"]="o",["ú"]="u",
	["Á"]="A",["É"]="E",["Í"]="I",["Ó"]="O",["Ú"]="U"}
	for c,d in pairs(b) do a=string.gsub(a,c,d) end return a
end
Llamala con remove_accents("Andrés") y te devuelve "Andres". Si la necesitas en minúsculas, puedes agregar :lower() :fuckyeah-1414023828:
pexabosh escribió:
28 Ene 2023 07:34
R Landaeta escribió:
16 Dic 2022 05:43
Necesito quitar los acentos (Andrés => Andres). Esto ya lo pude hacer, pero con un código muy feo.
Saludos! :pc:

Para eliminar acentos de las mayúsculas y minúsculas, usa esta función:
function remove_accents(a)
	local b={["á"]="a",["é"]="e",["í"]="i",["ó"]="o",["ú"]="u",
	["Á"]="A",["É"]="E",["Í"]="I",["Ó"]="O",["Ú"]="U"}
	for c,d in pairs(b) do a=string.gsub(a,c,d) end return a
end
Llamala con remove_accents("Andrés") y te devuelve "Andres". Si la necesitas en minúsculas, puedes agregar :lower() :fuckyeah-1414023828:
Muchas gracias :)