iSmokee Posted January 17, 2016 Share Posted January 17, 2016 Hola como hago para que cuando el (usuario) se register no puede poner signos como estos $%!# y esas cosas.. Si me podrían ayudar se los agradecería mucho.. Link to comment
aka Blue Posted January 17, 2016 Share Posted January 17, 2016 Usa string.find, supongo. Link to comment
iSmokee Posted January 17, 2016 Author Share Posted January 17, 2016 Me puedes ayudar un poco? es que no se mucho Ingles.. Link to comment
alex17 Posted January 18, 2016 Share Posted January 18, 2016 tal vez esto sirva no estoy muy seguro , tendrás que probarlo signos = {"$", "%", "!", "#"} function register() ------- ------- ------- for _, text in ipairs(signos) do if string.find(username, text) then return outputChatBox("No esta permitido este signo ( " ..text " )" ) end end end Link to comment
Tomas Posted January 19, 2016 Share Posted January 19, 2016 tal vez esto sirva no estoy muy seguro , tendrás que probarlo signos = {"$", "%", "!", "#"} function register() ------- ------- ------- for _, text in ipairs(signos) do if string.find(username, text) then return outputChatBox("No esta permitido este signo ( " ..text " )" ) end end end Es más eficiente así: bannedchar = { ["$"] = true, ["%"] = true, ["&"] = true } if ( bannedchar[str] ) then return end Link to comment
Castillo Posted January 19, 2016 Share Posted January 19, 2016 tal vez esto sirva no estoy muy seguro , tendrás que probarlo signos = {"$", "%", "!", "#"} function register() ------- ------- ------- for _, text in ipairs(signos) do if string.find(username, text) then return outputChatBox("No esta permitido este signo ( " ..text " )" ) end end end "return" va despues de tu codigo, osea despues de outputChatBox. @Tomas: Eso no funcionara, porque el quiere evitar que usen algunos signos en los nombres de usuario. Imaginate que el usuario fuese: "$Hello$", tu codigo no lo detectaria, ya que solo detectaria si es "$", "%", etc. Link to comment
iSmokee Posted January 19, 2016 Author Share Posted January 19, 2016 Hice lo que dijiste Solid pero no me funciona me da error ERROR: attempt to call local 'text' (a string value) Link to comment
Castillo Posted January 20, 2016 Share Posted January 20, 2016 No dije que hicieras nada, solo corregi a alex y tomas. Link to comment
Sasu Posted January 20, 2016 Share Posted January 20, 2016 signos = {"$", "%", "!", "#"} function register() ------- ------- ------- for _, text in ipairs(signos) do if string.find(username, text) then outputChatBox("No esta permitido este signo ( " ..text.." )" ) return end end end Link to comment
iSmokee Posted January 20, 2016 Author Share Posted January 20, 2016 Bueno eso del return que corregí y no funciono da ese error Link to comment
Sasu Posted January 20, 2016 Share Posted January 20, 2016 Pero le faltó los dos puntos despues de la variable para unirlo con el string. Link to comment
alex17 Posted January 20, 2016 Share Posted January 20, 2016 Pero le faltó los dos puntos despues de la variable para unirlo con el string. es verdad copia lo que te paso @Sasu que ya esta corregido Link to comment
Tomas Posted January 20, 2016 Share Posted January 20, 2016 @Tomas: Eso no funcionara, porque el quiere evitar que usen algunos signos en los nombres de usuario. Imaginate que el usuario fuese: "$Hello$", tu codigo no lo detectaria, ya que solo detectaria si es "$", "%", etc. Se cortó un pedazo del código cuando lo pegué.. aquí está completo: bannedchar = { ["$"] = true, ["%"] = true, ["&"] = true } for i = 1, #name do cache = {} cache[i] = string.sub(name, i, i) end for _, str in ipairs(cache) do if ( bannedchar[str] ) then return end end cache = nil Ambas hacen lo mismo, pero esta es otra forma de resolverlo Link to comment
iSmokee Posted January 20, 2016 Author Share Posted January 20, 2016 funciono y como hago para que si pone los signos no lo deje registrarse por que se registra igual.. Link to comment
Tomas Posted January 20, 2016 Share Posted January 20, 2016 De todos modos... string.find es para conseguir la posición, tú sólo necesitas saber si se encuentra ahí, así que es mejor utilizar string.match EDIT: string.find no es funcional con los operadores lógicos ya que siempre devuelve un string, incluso cuando se llama a la función con strings vacíos, actualmente no funcionaría. Link to comment
Enargy, Posted January 21, 2016 Share Posted January 21, 2016 funciono y como hago para que si pone los signos no lo deje registrarse por que se registra igual.. if not string.find(username,text) then addAccount(...) else outputChatBox("Error") return end Link to comment
starksZ Posted January 21, 2016 Share Posted January 21, 2016 funciono y como hago para que si pone los signos no lo deje registrarse por que se registra igual.. Usa una condición. if not texto == "$" then --Bloque else --Bloque end Link to comment
Tomas Posted January 21, 2016 Share Posted January 21, 2016 El loop detiene la función si se encuentra algún carácter no permitido, ya debería funcionar... el problema es el string.find Link to comment
Recommended Posts