首页 > 解决方案 > 如果它是一个精确的数字,如何将字符串转换为浮点数,而不仅仅是以javascript中的数字开头

问题描述

我正在尝试制作检查字符串的功能。如果字符串是数字,那么它会将其转换为浮点数。否则,它将保持原样。

例如:我有这些测试字符串:

"123" => 123
"12.3" => 12.3
"12.300" => 12.3
"test123" => "test123"
"123test" => "123test"
"12.3test" => "12.3test"
"123@123.123" => "123@123.123"

我试图按照下面的方式自行制作,但有时它会通过删除字母并将真实字符串转换为数字并保留字符串数字的第一部分

let mynumber="123test@gmail.com"
mynumber = parseFloat(mynumber) ? parseFloat(mynumber) : mynumber;
//output: 123

标签: javascript

解决方案


您可以将字符串转换为数字,Number()并检查其是否为 NaN。

function check(num){
   return isNaN(Number(num)) ? num : Number(num);
}

let mynumber="123test@gmail.com"
let mynumber2 = "34234";
let mynumber3 = "3234.234";

let result = check(mynumber);
let result2 = check(mynumber2);
let result3 = check(mynumber3);


console.log(result, typeof result);
console.log(result2, typeof result2);
console.log(result3, typeof result3);


推荐阅读