Eu preciso verificar se justPrices[i].substr(commapos+2,1)
.
A string é algo como: "blabla, 120"
Nesse caso, ele verificaria se '0' é um número. Como isso pode ser feito?
javascript
Lisovaccaro
fonte
fonte
Respostas:
Você pode usar operadores de comparação para ver se está no intervalo de caracteres de dígitos:
fonte
você pode usar
parseInt
e verificar comisNaN
ou se você quiser trabalhar diretamente em sua string, você pode usar regexp desta forma:
fonte
function is_numeric_char(c) { return /\d/.test(c); }
is_numeric_char("foo1bar") == true
). se você quiser verificar um caracter numérico/^\d$/.test(c)
seria uma solução melhor. mas de qualquer forma, não era a questão :)EDITAR: A resposta atualizada do Blender é a resposta certa aqui se você estiver apenas verificando um único caractere (a saber
!isNaN(parseInt(c, 10))
). Minha resposta abaixo é uma boa solução se você quiser testar strings inteiras.Aqui está a
isNumeric
implementação do jQuery (em JavaScript puro), que funciona com strings completas :O comentário para esta função é:
Acho que podemos confiar que esses caras gastaram um bom tempo nisso!
Fonte comentada aqui . Discussão super geek aqui .
fonte
Eu me pergunto por que ninguém postou uma solução como:
com uma invocação como:
fonte
Você pode usar isto:
Aqui, eu comparei com o método aceito: http://jsperf.com/isdigittest/5 . Eu não esperava muito, então fiquei bastante surpreso quando descobri que o método aceito era muito mais lento.
O interessante é que, embora o método aceito seja a entrada correta mais rápida (por exemplo, '5') e mais lento para incorreto (por exemplo, 'a'), meu método é exatamente o oposto (rápido para incorreto e mais lento para correto).
Ainda assim, no pior caso, meu método é 2 vezes mais rápido do que a solução aceita para entrada correta e 5 vezes mais rápido para entrada incorreta.
fonte
!!([!0, !0, !0, !0, !0, !0, !0, !0, !0, !0][n]);
Tem grande potencial de WTF e funciona muito bem (falha para007
)."length"
(e outros atributos encontrados em matrizes) são dígitos: PAcho muito divertido descobrir maneiras de resolver isso. Abaixo estão alguns.
(Todas as funções abaixo presumem que o argumento é um único caractere. Mude para
n[0]
para aplicá-lo)Método 1:
Método 2:
Método 3:
Método 4:
Método 5:
String de teste:
fonte
true
para" "
.charCodeAt()
comparação - que foi quase 4x mais rápida - jsperf.com/isdigit3Função simples
fonte
Se você estiver testando caracteres únicos, então:
retornará verdadeiro ou falso dependendo se c é um dígito ou não.
fonte
Eu sugiro um regex simples.
Se você estiver procurando apenas o último caractere da string:
E a regex é ainda mais simples se você estiver apenas verificando um único caractere como entrada:
fonte
A solução mais curta é:
Você também pode aplicar estes:
se você quiser verificar mais de 1 chatacter, você pode usar as próximas variantes
Expressão regular:
Comparação:
Verifique se não é NaN
fonte
fonte
saída sem modo estrito:
saída com modo estrito:
fonte
Experimentar:
fonte
Isso parece funcionar:
Ligação estática:
Ligação de protótipo:
Ele verificará caracteres únicos, bem como strings inteiras, para ver se são numéricos.
fonte
Fonte
fonte
Código fonte
fonte
Você pode tentar isso (funcionou no meu caso)
Se você quiser testar se o primeiro caractere de uma string é um int:
Se você quiser testar se o char é um int:
fonte
Esta função funciona para todos os casos de teste que pude encontrar. Também é mais rápido do que:
fonte
Pelo que eu sei, a maneira mais fácil é simplesmente multiplicar por
1
:A multiplicação por um cria um número de qualquer string numérica (como você tem apenas um caractere, será sempre um número inteiro de 0 a 9) e um
NaN
para qualquer outra string.fonte
Semelhante a uma das respostas acima, usei
Esta postagem do blog esclarece mais sobre a verificação de se uma string é numérica em Javascript | Datilografado e ES6
fonte
Uma solução simples, aproveitando a verificação de tipo dinâmica da linguagem:
veja os casos de teste abaixo
Exibir trecho de código
fonte
Apenas use
isFinite
fonte