例如,如果我们说:
parseInt("128"); // => 128
完美无瑕地工作。
如果我们说:
parseInt("a128"); // => NaN
但如果我们说:
parseInt("123a"); // => 128 again :(
是否有明确的方法来解析数字,如果参数中出现任何字母字符,它将返回NaN
?
答案 0 :(得分:2)
parseInt
不会以这种方式工作,请查看specs。
但是你可以通过
强制它以这种方式工作
(function(){
var old = parseInt;
parseInt = function(x, y){
if ( ( !y || y == 10 ) && isNaN( Number(x) ) ) { return NaN }
return old.apply(this, arguments)
}
})();
//test cases
console.log( parseInt("123") );
console.log( parseInt("123a") );
console.log( parseInt("123a", 16) );
console.log( parseInt("a123") );

答案 1 :(得分:2)
对于需要处理字符串的场景,您也可以使用 Number 函数。 Number()函数将object参数转换为表示对象的数字值
//test cases
console.log( Number("123") );
console.log( Number("123a") );
console.log( Number("a123") );
答案 2 :(得分:1)
您也可以自己执行此功能:
using System.Data.Entity;
答案 3 :(得分:0)
这是你期望的吗?
function checkIsStringNaN (str) {
return isNaN(str) ? NaN : parseInt(str)
}
checkIsStringNaN("128") // 128
checkIsStringNaN("a128") // NaN
checkIsStringNaN("123a") // NaN