仅当字符串是数字时才将字符串转换为数字的Javascript
如果我不知道字符串值是否为有效数字,如何将字符串转换为数字。如果字符串无效,我希望保留该字符串 示例仅当字符串是数字时才将字符串转换为数字的Javascript,javascript,Javascript,如果我不知道字符串值是否为有效数字,如何将字符串转换为数字。如果字符串无效,我希望保留该字符串 示例 "0" -> 0 "0.5" -> 0.5 "100" -> 100 "abc" -> "abc" // remains a string " " -> " " // remains an empty string "-1" -> -1 // I'd like to convert negative numbers too 我试过了 var str = "
"0" -> 0
"0.5" -> 0.5
"100" -> 100
"abc" -> "abc" // remains a string
" " -> " " // remains an empty string
"-1" -> -1 // I'd like to convert negative numbers too
我试过了
var str = " ";
var num = +str // num = 0
var num = Number(str) // num = 0
var num = parseInt(str) // num = NaN
看来我的问题是空间。我曾考虑使用
parseInt
,但我认为在Javascript中使用NaN
作为一个值可能不是一个好主意,而让字符串保持原样会更好。您可以创建一个自定义函数
函数customParseInt(str){
常量解析=+str;
返回str.trim();
}
console.log(customParseInt(“0”));
console.log(customParseInt(“0.5”));
console.log(customParseInt(“100”));
console.log(customParseInt(“abc”));
console.log(customParseInt(“”);
日志(customParseInt(“5ab”);
log(customParseInt(“-1”)代码>您可以使用=
检查转换后的int和字符串是否相同
例如,您有两个字符串
var a = '123', b = '111x';
var intA = parseInt(a), intB = parseInt(b);
if(a == intA){
console.log(a is a valid integer string); // this gets printed
}else{
console.log('a is not a valid integer string');
}
if(b == intB){
console.log(b is a valid integer string);
}else{
console.log('b is not a valid integer string');// this gets printed
}
使用如下所示的“| |”运算符
var num=parseInt(str)| num
如果有效,它将返回与“str”等价的整数,否则将保持原样。您需要先进行一些简单的检查,然后使用数字(x)
,因为它将处理小数点数字等parseInt
顾名思义,它只处理整数
这里有一个例子
function toNumberIfNumber(convertee) {
const prep = convertee.trim();
if (prep === "") {
return convertee;
}
const num = Number(convertee);
if (isNaN(num)) {
return convertee;
} else {
return num;
}
}
console.log(toNumberIfNumber("0")); //0
console.log(toNumberIfNumber("0.5")); //0.5
console.log(toNumberIfNumber("100")); //100
console.log(toNumberIfNumber("abc")); //"abc"
console.log(toNumberIfNumber(" ")); //" "
您可以检查字符串的数值是否等于该值
var数组=[“0”、“0.5”、“100”、“abc”和“”];
log(array.map(a=>(+a.toString()==a?+a:a))代码>
.as控制台包装{max height:100%!important;top:0;}
创建一个将使用parseInt
的自定义函数。如果结果是NaN
返回字符串,则可以添加一个简单的If
条件。否?0.5
不是整数…?应避免使用==对===。此外,在使用parseInt时,始终使用基数@只有在不理解类型强制时才应避免使用VedranMaricevic==
。@RobG OP没有提供有关科学符号的详细信息OP甚至不区分浮点和整数(问题要求整数,但随后使用0.5作为示例)@Weedoze使用parseFloat
而不是parseInt
。它也解析浮点值,如果num=“0”,它不只是一个字符串吗?它是一个wunderbar,danke!
function toNumberIfNumber(convertee) {
const prep = convertee.trim();
if (prep === "") {
return convertee;
}
const num = Number(convertee);
if (isNaN(num)) {
return convertee;
} else {
return num;
}
}
console.log(toNumberIfNumber("0")); //0
console.log(toNumberIfNumber("0.5")); //0.5
console.log(toNumberIfNumber("100")); //100
console.log(toNumberIfNumber("abc")); //"abc"
console.log(toNumberIfNumber(" ")); //" "