Javascript 如何强制parseInt在任何字符串上返回NaN?
例如,如果我们说:Javascript 如何强制parseInt在任何字符串上返回NaN?,javascript,type-conversion,Javascript,Type Conversion,例如,如果我们说: parseInt("128"); // => 128 parseInt("123a"); // => 128 again :( 工作完美无瑕 如果我们说: parseInt("a128"); // => NaN 但如果我们说: parseInt("128"); // => 128 parseInt("123a"); // => 128 again :( 是否有明确的方法只解析数字,如果参数中出现任何字母字符,它将返回NaN?这就是您期望
parseInt("128"); // => 128
parseInt("123a"); // => 128 again :(
工作完美无瑕
如果我们说:
parseInt("a128"); // => NaN
但如果我们说:
parseInt("128"); // => 128
parseInt("123a"); // => 128 again :(
是否有明确的方法只解析数字,如果参数中出现任何字母字符,它将返回NaN?这就是您期望的结果
function checkIsStringNaN (str) {
return isNaN(str) ? NaN : parseInt(str)
}
checkIsStringNaN("128") // 128
checkIsStringNaN("a128") // NaN
checkIsStringNaN("123a") // NaN
这就是你想要的吗
function checkIsStringNaN (str) {
return isNaN(str) ? NaN : parseInt(str)
}
checkIsStringNaN("128") // 128
checkIsStringNaN("a128") // NaN
checkIsStringNaN("123a") // NaN
parseInt不能以这种方式工作,请检查
它删除前导空格和尾随空格。
如果遇到不解释为整数且不受基数支持的字符,则将忽略该字符
但是,您可以通过执行以下操作来强制它以这种方式工作
作用{
var old=parseInt;
parseInt=functionx,y{
如果!y | | y==10&&isNaN Numberx{return NaN}
返回old.applythis,参数
}
};
//测试用例
console.log parseInt123;
console.log parseInt123a;
console.log parseInt123a,16;
console.log.123 parseInt不能以这种方式工作,请检查
它删除前导空格和尾随空格。
如果遇到不解释为整数且不受基数支持的字符,则将忽略该字符
但是,您可以通过执行以下操作来强制它以这种方式工作
作用{
var old=parseInt;
parseInt=functionx,y{
如果!y | | y==10&&isNaN Numberx{return NaN}
返回old.applythis,参数
}
};
//测试用例
console.log parseInt123;
console.log parseInt123a;
console.log parseInt123a,16;
console.log.123 您也可以自己完成该功能:
function in_array (array, key){
var check = false;
for(var i = 0; i < array.length; i++){
if(key == array[i]){
check = true;
break;
}
}
return check;
}
var allowedchars=["0","1","3","4","5","6","7","8","9"];
function checkIsStringNaN (str){
var b = true;
for(var i = 0, i < str.length; i++){
if(!in_array(allowedchars, str.charAt(i))){
b = false;
break;
}
}
if(!b) {
return NaN;
} else {
return parseInt(str);
}
}
您也可以自己完成该功能:
function in_array (array, key){
var check = false;
for(var i = 0; i < array.length; i++){
if(key == array[i]){
check = true;
break;
}
}
return check;
}
var allowedchars=["0","1","3","4","5","6","7","8","9"];
function checkIsStringNaN (str){
var b = true;
for(var i = 0, i < str.length; i++){
if(!in_array(allowedchars, str.charAt(i))){
b = false;
break;
}
}
if(!b) {
return NaN;
} else {
return parseInt(str);
}
}
对于需要处理字符串的场景,也可以使用数字函数。数字函数将对象参数转换为表示对象值的数字 //测试用例 console.log编号123; console.log编号123A;
console.log编号123 对于需要处理字符串的场景,也可以使用数字函数。数字函数将对象参数转换为表示对象值的数字 //测试用例 console.log编号123; console.log编号123A;
console.log编号123;您是否正在尝试检查字符串是否仅包含数字?是否正在尝试分析数字并不忽略字母表。如果出现一个字母字符,它将返回一个NaN。你可以用数字来代替。如果!foo.test/^\d+$/bar=NaN。是否尝试检查字符串是否仅包含数字?尝试分析数字并不忽略字母表。如果出现一个字母字符,它将返回一个NaN。你可以用数字来代替。如果!foo.test/^\d+$/bar=NaN。