我需要检查justPrices[i].substr(commapos+2,1)
。
字符串类似于:“blabla,120”
在这种情况下,它会检查'0'是否为数字。怎么办呢?
答案 0 :(得分:115)
您可以使用isNaN()
检查 是否为
var c = justPrices[i].substr(commapos + 2, 1);
if (!isNaN(parseInt(c, 10))) {
// Is a number
}
或者更详细地说:
if ('0123456789'.indexOf(c) !== -1) {
// Is a number
}
如果您不关心Internet Explorer:
if ('0123456789'.includes(c)) {
// Is a number
}
答案 1 :(得分:46)
您可以使用比较运算符来查看它是否在数字字符范围内:
var c = justPrices[i].substr(commapos+2,1);
if (c >= '0' && c <= '9') {
// it is a number
} else {
// it isn't
}
答案 2 :(得分:27)
您可以使用parseInt
而不是isNaN
或者如果你想直接在你的字符串上工作,你可以使用这样的正则表达式:
function is_numeric(str){
return /^\d+$/.test(str);
}
答案 3 :(得分:17)
编辑:如果您只是检查一个字符(即!isNaN(parseInt(c, 10))
),Blender的更新答案就是正确答案。如果您想测试整个字符串,下面的答案是一个很好的解决方案。
这是jQuery的isNumeric
实现(在纯JavaScript中),它对完整字符串起作用:
function isNumeric(s) {
return !isNaN(s - parseFloat(s));
}
此功能的评论如下:
// parseFloat NaNs numeric-cast false positives(null | true | false |“”)
// ...但是误解了前导数字符串,尤其是十六进制文字(“0x ...”)
//减法强制无穷大于NaN
我认为我们可以相信这些人已经花了很多时间在这上面!
答案 4 :(得分:15)
您可以使用:
function isDigit(n) {
return Boolean([true, true, true, true, true, true, true, true, true, true][n]);
}
在这里,我将其与公认的方法进行了比较:http://jsperf.com/isdigittest/5。我并没有期待太多,所以当我发现接受的方法慢得多时,我感到非常惊讶。
有趣的是,虽然接受的方法是更快的正确输入(例如,&#39; 5&#39;)而且对于不正确的更慢(例如&#39; a&#39;),我的方法恰恰相反(快速不正确,慢速正确)。
尽管如此,在最坏的情况下,我的方法比正确输入的接受解决方案快2倍,错误输入快5倍以上。
答案 5 :(得分:13)
我想知道为什么没有人发布过如下解决方案:
var charCodeZero = "0".charCodeAt(0);
var charCodeNine = "9".charCodeAt(0);
function isDigitCode(n) {
return(n >= charCodeZero && n <= charCodeNine);
}
调用如:
if (isDigitCode(justPrices[i].charCodeAt(commapos+2))) {
... // digit
} else {
... // not a digit
}
答案 6 :(得分:10)
我认为想办法解决这个问题非常有趣。以下是一些。
(假设参数下面的所有函数都是单个字符。更改为n[0]
以强制执行它
function isCharDigit(n){
return !!n.trim() && n > -1;
}
function isCharDigit(n){
return !!n.trim() && n*0==0;
}
function isCharDigit(n){
return !!n.trim() && !!Number(n+.1); // "+.1' to make it work with "." and "0" Chars
}
var isCharDigit = (function(){
var a = [1,1,1,1,1,1,1,1,1,1];
return function(n){
return !!a[n] // check if `a` Array has anything in index 'n'. Cast result to boolean
}
})();
function isCharDigit(n){
return !!n.trim() && !isNaN(+n);
}
var str = ' 90ABcd#?:.+', char;
for( char of str )
console.log( char, isCharDigit(char) );
答案 7 :(得分:6)
简单功能
function isCharNumber(c){
return c >= '0' && c <= '9';
}
答案 8 :(得分:4)
如果您正在测试单个字符,那么:
var isDigit = (function() {
var re = /^\d$/;
return function(c) {
return re.test(c);
}
}());
将返回true或false,具体取决于c是否为数字。
答案 9 :(得分:3)
我建议使用一个简单的正则表达式。
如果您只想查找字符串中的最后一个字符:
/^.*?[0-9]$/.test("blabla,120"); // true
/^.*?[0-9]$/.test("blabla,120a"); // false
/^.*?[0-9]$/.test("120"); // true
/^.*?[0-9]$/.test(120); // true
/^.*?[0-9]$/.test(undefined); // false
/^.*?[0-9]$/.test(-1); // true
/^.*?[0-9]$/.test("-1"); // true
/^.*?[0-9]$/.test(false); // false
/^.*?[0-9]$/.test(true); // false
如果只检查单个字符作为输入,则正则表达式甚至更简单:
var char = "0";
/^[0-9]$/.test(char); // true
答案 10 :(得分:2)
最短的解决方案是:
const isCharDigit = n => n < 10;
您也可以应用这些:
const isCharDigit = n => Boolean(++n);
const isCharDigit = n => '/' < n && n < ':';
const isCharDigit = n => !!++n;
如果您要检查多个聊天对象,则可以使用下一个变体
正则表达式:
const isDigit = n => /\d+/.test(n);
比较:
const isDigit = n => +n == n;
检查它是否不是NaN
const isDigit = n => !isNaN(n);
答案 11 :(得分:1)
isNumber = function(obj, strict) {
var strict = strict === true ? true : false;
if (strict) {
return !isNaN(obj) && obj instanceof Number ? true : false;
} else {
return !isNaN(obj - parseFloat(obj));
}
}
没有严格模式的输出:
var num = 14;
var textnum = '14';
var text = 'yo';
var nan = NaN;
isNumber(num);
isNumber(textnum);
isNumber(text);
isNumber(nan);
true
true
false
false
以严格模式输出:
var num = 14;
var textnum = '14';
var text = 'yo';
var nan = NaN;
isNumber(num, true);
isNumber(textnum, true);
isNumber(text, true);
isNumber(nan);
true
false
false
false
答案 12 :(得分:1)
尝试:
data = Convert.ToUInt16(splitdata, 16);
答案 13 :(得分:0)
var Is = {
character: {
number: (function() {
// Only computed once
var zero = "0".charCodeAt(0);
var nine = "9".charCodeAt(0);
return function(c) {
return (c = c.charCodeAt(0)) >= zero && c <= nine;
}
})()
}
};
答案 14 :(得分:0)
这似乎有效:
静态绑定:
String.isNumeric = function (value) {
return !isNaN(String(value) * 1);
};
原型绑定:
String.prototype.isNumeric = function () {
return !isNaN(this.valueOf() * 1);
};
它将检查单个字符以及整个字符串以查看它们是否为数字。
答案 15 :(得分:0)
你可以尝试这个(在我的情况下工作)
如果要测试字符串的第一个字符是否为int:
if (parseInt(YOUR_STRING.slice(0, 1))) {
alert("first char is int")
} else {
alert("first char is not int")
}
如果要测试char是否为int:
if (parseInt(YOUR_CHAR)) {
alert("first char is int")
} else {
alert("first char is not int")
}
答案 16 :(得分:0)
square = function(a) {
if ((a * 0) == 0) {
return a*a;
} else {
return "Enter a valid number.";
}
}
答案 17 :(得分:0)
利用语言的动态类型检查的简单解决方案:
function isNumber (string) {
//it has whitespace
if(string === ' '.repeat(string.length)){
return false
}
return string - 0 === string * 1
}
请参阅下面的测试用例
function isNumber (string) {
if(string === ' '.repeat(string.length)){
return false
}
return string - 0 === string * 1
}
console.log('-1' + ' → ' + isNumber ('-1'))
console.log('-1.5' + ' → ' + isNumber ('-1.5'))
console.log('0' + ' → ' + isNumber ('0'))
console.log(', ,' + ' → ' + isNumber (', ,'))
console.log('0.42' + ' → ' + isNumber ('0.42'))
console.log('.42' + ' → ' + isNumber ('.42'))
console.log('#abcdef' + ' → ' + isNumber ('#abcdef'))
console.log('1.2.3' + ' → ' + isNumber ('1.2.3'))
console.log('' + ' → ' + isNumber (''))
console.log('blah' + ' → ' + isNumber ('blah'))
答案 18 :(得分:0)
检查字符串是否为数字:
function isNumber(n){
return !!+n;
}
// example:
// isNumber(' ') -> false
// isNumber('.3425e9') -> true
它也适用于字符,甚至比数组查找方法还要快。
答案 19 :(得分:0)
function is_numeric(mixed_var) {
return (typeof(mixed_var) === 'number' || typeof(mixed_var) === 'string') &&
mixed_var !== '' && !isNaN(mixed_var);
}
答案 20 :(得分:0)
据我所知,最简单的方法就是乘以1
:
var character = ... ; // your character
var isDigit = ! isNaN(character * 1);
乘以1可以从任何数字字符串中得到一个数字(因为您只有一个字符,它将始终是0到9之间的整数),而对于任何其他字符串则是NaN
。
答案 21 :(得分:0)
类似于上面的答案之一,我使用了
var sum = 0; //some value
let num = parseInt(val); //or just Number.parseInt
if(!isNaN(num)) {
sum += num;
}
此博客文章进一步阐明了此check if a string is numeric in Javascript | Typescript & ES6
答案 22 :(得分:0)
这是一个简单的函数。
function is_number(char) {{
return !isNaN(parseInt(char));
}}
Returns: true, false
快乐编码!
答案 23 :(得分:0)
我正在使用这个:
const isNumber = (str) => (
str.length === str.trim().length
&& str.length > 0
&& Number(str) >= 0
)
它适用于字符串或单个字符。
答案 24 :(得分:-1)
只需使用isFinite
const number = "1";
if (isFinite(number)) {
// do something
}