• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

eduardo

Dúvida em saber uma propriedade do C#

8 mensagens neste tópico

Boas pessoal

É o seguinte eu necessitava de saber qual é a propriedade que permite saber o tamanho de caracteres num número inteiro. Para strings sei que é com a propriedade length.

O que eu pretendo mesmo é calcular uma função TestarNumContribuinte , que retorne True se o seu tamanho é igual a 9 , e False caso contrário.

Obrigado!

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes converter o número para uma string, e aí contar os caracteres

nrContribuinte.toString().length

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

softclean , Obrigado , mas está a dar erro , é que a minha função é booleana e diz que não consegue converter inteiro para booleano. Vê aí :

 public bool TestarNumCont(int num_contribuinte)
        {

            if (num_contribuinte.ToString().Length=9)
                return true;
            else
                return false;
        }

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, da maneira que fizeste estás a atribuir um valor a uma propriedade que é só de leitura, logo será o ==.

Já agora, podes reduzir essa função a uma linha, que pode facilitar a leitura de código mais tarde:

public bool TestarNumCont(int num_contribuinte)
        {
            return (num_contribuinte.ToString().Length == 9)
        }

Visto que o teste que estás a fazer no if retorna um booleano, podes usá-lo para retorno da função.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em vez de = mete == .

MilitisChristus Obrigado! Era isso mesmo =)

Sim, da maneira que fizeste estás a atribuir um valor a uma propriedade que é só de leitura, logo será o ==.

Já agora, podes reduzir essa função a uma linha, que pode facilitar a leitura de código mais tarde:

public bool TestarNumCont(int num_contribuinte)
        {
            return (num_contribuinte.ToString().Length == 9)
        }

Visto que o teste que estás a fazer no if retorna um booleano, podes usá-lo para retorno da função.

softclean , Obrigado! Sim tens razão , uma linha basta.

Já agora, aproveito para dizer o que queria fazer com esta função : ela está inserida em WCF Service (ASP.NET Web Service Application) e preciso de invoca-la  para uma Class Library do tipo Workflow, e não estou a ver como se faz.

Se alguém me puder ajudar agradecia muito.

Obrigado

Cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No Workflow tens q gerar uma referencia para o web service, para poderes aceder aos web methods.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se estas a tentar validar 1 NIF, podes usar mais que validar se tem 9 digitos, exitem regras para isso. Encontras facilmente codigo na net para isso.

Deixo-te aqui 1 exemplo.

public static bool IsValidNIF(string nif)
        {
            char x;
            int checkDigit;

            //Verifica se é numerico e tem 9 digitos
            if (IsNumeric(nif) && nif.Length == 9)
            {
                //Get the first number of NIF
                 x = nif[0]; 

                //Verifica se o nif comeca por (1, 2, 5, 6, 8, 9)
                if (x.Equals('1') || x.Equals('2') || x.Equals('5') || x.Equals('6') || x.Equals('8') || x.Equals('9'))
                {
                    //Calcula o CheckDigit 
                    checkDigit = (Convert.ToInt16(x.ToString()) * 9);
                    for (int i = 2; i <= 8; i++)
                    {
                        checkDigit += Convert.ToInt16(nif[i - 1].ToString()) * (10-i);
                    }
                    checkDigit = 11-(checkDigit % 11); 

                    //Se checkDigit for superior a 10 passa a 0
                    if (checkDigit >= 10) checkDigit = 0; 

                    //Compara o digito de controle com o último numero do NIF
                    //Se igual, o NIF é válido.
                    if (checkDigit.ToString() == nif[8].ToString()) return true;
                }
            }
            
            return false;
         }


public static bool IsNumeric(string inputString)
{
       return Regex.IsMatch(inputString, "^[0-9]+$");
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora