Como evitar escribir algunos símbolos en un Input

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

quisiera que me ayudaran con algo, por favor...

Necesito evitar que se escriban estos símbolos en un Input: \ / : * ? " < > |

Pasa que estoy en un proyecto, donde se guardará un .csv con el nombre ingresado en el Input, y si el usuario añade un símbolo que no se permite en Windows, como son los mencionado arriba, me sale terrible error.

Lo hice con el String.Replace, pero no me permite reemplaza el: \ ni el "

Para que vean como queda el código después del: \

Imagen

Si alguien me pudiese ayudar, se lo agradezco.
Pon esto, reemplaza si quieres el nombre de las variables:
input = "esto esta prohibido <:>" --'Aqui pones lo que quieres verificar'
local bannedCharacters = {"\\", "/", ":", "*", "?", "<", ">", "|"} --'Aquí las palabras baneadas'

for i in pairs(bannedCharacters) do
	local char = bannedCharacters[i]
	local _, count = input:gsub(char, char)
	if count ~= 0 then prohibido = true end
end

if prohibido then
	Dialog.Message("Prohibido", "Eso esta prohibido!") --'Hacer esto si el texto tiene palabras baneadas'
else
	Dialog.Message("Correcto", "Eso esta correcto!") --'Hacer esto si el texto no tiene palabras baneadas'
end
Espero que te sirva bro! :D
Hello friend, There are several ways to do this see these two examples

--->> Test = 1
tText = string.gsub(Input.GetText("Input1"),"%p","")
Dialog.Message("Notice", tText, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);


--->> Test = 2
tTxt = Input.GetText("Input1")
tTxt = String.Replace(tTxt, "/", "", false);
tTxt = String.Replace(tTxt, "*", "", false);
tTxt = String.Replace(tTxt, "\\", "", false);
tTxt = String.Replace(tTxt, ".", "", false);

Dialog.Message("Notice", tTxt, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);

Con cammelCase formal, punto y coma al final de las lineas, dentro de tu código se vería así:
local inputString = Input.GetText("inp_name");
local bannedChars = {"\\", "/", ":", "*", "?", "<", ">", "|"};
for i in pairs(bannedChars) do
	local currentChar = bannedChars[i];
	local _, replacesCount = inputString:gsub(currentChar, currentChar);
	if replacesCount ~= 0 then
		bannedCharFound = true;
	end
end

if bannedCharFound then
	Dialog.Message("Error", "Banned characters found");
else
	Dialog.Message("Success", "No banned characters found");
end
Por cierto puedes agregar más caracteres prohibidos o incluso frases en bannedChars{}
Si quieres que se eliminen automáticamente los caracteres prohibidos el código es todavía más fácil:
local inputString = Input.GetText("inp_name");
local bannedChars = {"\\", "/", ":", "*", "?", "<", ">", "|"};
for i in pairs(bannedChars) do
	inputString = inputString:gsub(bannedChars[i], "");
end
Dialog.Message("Output", inputString)
dripro escribió:
07 Abr 2021 12:32

hi dude
regexp :yes: :yes:


ok since you have provided a solution
this just to play

HIDE: ON
Hidebb Message Hidden Description



see you
usamakey escribió:
pexabosh escribió:
dripro escribió:

Muchas gracias a todos ! :orly-1414025090:

Saludos.
Crea condiciones :cerrado:
Actualización: no era necesario hacer tanto:
sInput = '<Text>String?:Example/'
sResult = sInput:gsub('[\\/:*?"<>|]', "")
Dialog.Message("Result:", sResult)
Con esto, la entrada sería <Text>String?:Example/ y la salida sería TextStringExample. El método gsub puede reemplazar varios caracteres sin necesidad de que estén en una tabla, véase Programming in Lua: Patterns
pexabosh escribió:
11 May 2021 22:44
Actualización: no era necesario hacer tanto:
sInput = '<Text>String?:Example/'
sResult = sInput:gsub('[\\/:*?"<>|]', "")
Dialog.Message("Result:", sResult)
Con esto, la entrada sería <Text>String?:Example/ y la salida sería TextStringExample. El método gsub puede reemplazar varios caracteres sin necesidad de que estén en una tabla, véase Programming in Lua: Patterns
Gracias, amigo.