Jump to content

Definir y Reemplazar palabras en una oracion


Sergioks

Recommended Posts

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
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

 

 

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 by Arsilex
Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...