Sergioks Posted March 5, 2017 Share Posted March 5, 2017 Buenas a todos! Tengo unas dudas referentes a las funciones string. Necesito hacer un código que, detecte si en una oración hay una palabra "malsonante" y esta, sea reemplazada por otra. Yo poco a poco fui creando esta linea para identificar, pero a veces funciona y a veces no.. Por ello pregunto.. ¿esta linea esta bien realizada? y.. ¿como puedo reemplazar una palabra de dicha oración? Linea creada (¿inestable?) local ms = { [1] = {"Mierda"}, [2] = {"Puto"}, } -- addEventHandler("onPlayerChat", root, function(msg) for i=1, #ms do if ( string.find(string.lower(msg), ms[i][1], 1, true) ) then outputChatBox("No puedes decir esa palabra por este chat!") break end end end ) y.. ¿como puedo reemplazar una palabra de dicha oración? Espero sus respuestas, gracias de antemano por leer Link to comment
#Dv^ Posted March 5, 2017 Share Posted March 5, 2017 (edited) Creo que con string.gsub puedes eliminar dicha palabra o reemplazarla, un ejemplo sería este text = "Función imposible de ejecutar" print(string.gsub(text, "imposible", "")) -- Resultados: "Función de ejecutar" Edited March 5, 2017 by #Dv^ Link to comment
aka Blue Posted March 5, 2017 Share Posted March 5, 2017 Con :gsub haces algo parecido a lo que te ha dicho @#Dv^, bueno, directamente la reemplazas mejor dicho. Se usa en los Roleplays bastante: getPlayerName( source ):gsub("_"," ") -- Ejemplo, pasaría de Robert_Johnson a Robert Johnson, sin la "_" Link to comment
Sergioks Posted March 5, 2017 Author Share Posted March 5, 2017 2 hours ago, #Dv^ said: Creo que con string.gsub puedes eliminar dicha palabra o reemplazarla, un ejemplo sería este text = "Función imposible de ejecutar" print(string.gsub(text, "imposible", "")) -- Resultados: "Función de ejecutar" 1 hour ago, aka Blue said: Con :gsub haces algo parecido a lo que te ha dicho @#Dv^, bueno, directamente la reemplazas mejor dicho. Se usa en los Roleplays bastante: getPlayerName( source ):gsub("_"," ") -- Ejemplo, pasaría de Robert_Johnson a Robert Johnson, sin la "_" Ah bueno, muchas gracias por la ayuda @#Dv^, @aka Blue Link to comment
Arsilex Posted March 6, 2017 Share Posted March 6, 2017 (edited) local ms = { [1] = {"Mierda"}, [2] = {"Puto"}, } addEventHandler("onPlayerChat", root, function(msg) local newString = "" --Partimos el texto en varios partes for word in string.gmatch(msg, "[%a]+[%A]+") do --Revisamos si es una palabra malsonante for i = 1, #ms do if ( word:lower() == ms[i][1]:lower() ) then --Si lo es remplamazos dicha palabra con una "Bonita" newString = newString .. " "..word:gsub(ms[i][1]:lower(), "bonito") else --Si no lo es simplemente la añadimos la nuevo output newString = newString .. " "..word end end end outputChatBox(newString) end) No he podido comprobar su funcionalidad y puede que tenga fallos, pero esta es la idea principal. Edited March 6, 2017 by Arsilex Link to comment
Recommended Posts