Portal SAMP
[Pedido] Função pra limitar caracteres especiais - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Pedido] Função pra limitar caracteres especiais (/showthread.php?tid=2972)



Função pra limitar caracteres especiais - hiwyn - 08/11/2022

Alguém poderia me disponibilizar uma função que recebe uma string e não deixa nenhum caracter especial?
Tipo 'acento', '²'', ' ' (espaço)

Queria usar em uma função pro jogador poder trocar o nome dele no jogo, mas se ele colocar um nome desses depois ele nunca mais consegue logar...
Alguém tem isso aí? Ou sabe fazer?


RE: Função pra limitar caracteres especiais - Vel - 08/11/2022

https://github.com/katursis/Pawn.Regex

Código:
bool: IsValidName(const name[]) {
  static Regex: regex;

  if (!regex) {
    regex = Regex_New("^[a-zA-Z0-9_]+$");
  }
  return Regex_Check(name, regex);
}



RE: Função pra limitar caracteres especiais - Dr Editor - 08/11/2022

Sem regex:

Código:
stock IsValidNickname(const name[])
{
    for(new i = 0, len = strlen(name); i < len; i ++)
    {
        switch(name[i])
        {
            case '0'..'9', 'a'..'z', 'A'..'Z', '_': continue;
            default: return false;
        }
    }
    return true;
}



RE: Função pra limitar caracteres especiais - xbruno1000x - 08/11/2022

Código:
stock IsValidNick(nickname[])
{
    for(new i; i < strlen(nickname); i ++)
        if(!((nickname[i] >= '0' && nickname[i] <= '9') || (nickname[i] >= 'A' && nickname[i] <= 'Z') || (nickname[i] >= 'a' && nickname[i] <= 'z') || nickname[i] == '_' || nickname[i] == '.' || nickname[i] == '[' || nickname[i] == ']'))
            return false;

    return true;
}

É só você jogar IsValidNick(inputtext) na dialog que irá realizar a verificação.


RE: Função pra limitar caracteres especiais - hiwyn - 01/12/2022

obrigado gente, todos reputados!