Verificando se uma string é numérica. (Javascript)

Neste post mostro como verificar se uma string é um número e algumas formas de converter estas variaveis para números utilizando apenas Javascript puro.

 

Verificando

Então, para fazer esta verificação, você pode utilizar a função isNaN, que verifica se uma string é “Not a Number” (não é número). Logo, se ela retornar falso, estamos falando trabalhando com um número no formato string.

 

Como o Javascript é um ser temperamental e estranho, vamos ver alguns exemplos:

 

Nos testes acima, quando a função isNaN retornou false, isso indica que a variável é um número. Note que a função não reconheceu a string “42,99” como um número, o que era esperado. Para tratar números com dígitos separados por vírgula, você vai precisar fazer um tratamento especial.

 

 

Nesta segunda bateria de testes, nenhum dos valores foi reconhecido como um número.

 

Sendo assim, poderíamos criar a seguinte função para ver se uma string é um número:

 

O código acima vai inverter o resultado da função isNaN, o que nos da o resultado de forma amigável.

 

Convertendo

A primeira for a de converter é adicionando um sinal de adição na frente da variável (ou do valor). Todavia, isso só vai funcionar se a variável possuir apenas números.

 

Exemplos:

Todos os testes acima deram certo, ou seja, as strings foram convertidas em números. Exceto pelo valor separado por vírgula. Note que, desta forma, uma string vazia pode ser convertida para o número zero.

 

Novamente, nesta segunda bateria de testes, todos falharam.

 

Outra forma de fazer a conversão é utilizando a função parseInt mas, como o proprio nome sugere, ela converte strings apenas para integers, mas ela tem algumas vantagens.

 

Exemplos:

Nos testes acima, o único falhou foi a string “.99”, pois estamos convertendo a string para integer e esta função não consegue ‘entender’ que .99 == 0.99.

Outro ponto desta função é que, diferente de usar o sinal de adição, esta função não consegue converter uma string vazia para zero.

 

Diferente das tentativas anteriores, esta bateria de teste obteve alguns sucessos.  Esta função consegue extrair o número da string, dependendo do formato dela.

 

Existe também a função parseFloat, que resolve o problema de converter strings apenas para integers.

Com estes testes, verificamos que o comportamento da parseFloat é bem similar ao do parseInt, com a diferença que ela consegue converter strings tipo “.99” para número.

 

 

Extra

A função que fizemos acima (isNumber) consegue verificar se uma string é um número, mas não consegue reconhecer “42px” como número. Se você quiser que variáveis como esta sejam reconhecidas como número, podemos alterar a função acima para a seguinte forma:

 

Com esta modificação, você vai conseguir flexibilizar o processo de reconhecer se uma string é ou não um número.

 

Espero ter ajudado!

 

Referências:

 

The following two tabs change content below.
Breno RdV
Ex-Psicólogo, com quase uma década de experiência em Recursos Humanos e Gestão de Pessoas, atual desenvolvedor e Analista de Sistemas, trabalhando com PowerBuilder, C#, PowerShell e expandindo horizontes para Python, Xamarin, PHP, Angular e (por que não?) Unity.

Comments

comments

Posted in Dev, JavaScript and tagged , , .