在JavaScript中使用parseFloat()或parseInt()和正则表达式(转换CSV文件)

在JavaScript中使用parseFloat()或parseInt()和正则表达式(转换CSV文件),javascript,regex,string,floating-point,integer,Javascript,Regex,String,Floating Point,Integer,我正在将CSV文件转换为本地2D阵列。我想知道是否有更好的方法将字符串转换为float/int,而不是使用regex后跟parseFloat()/parseInt 想法/建议 // numex() - checkes to see if the string (str) is a number // returns number.valid (true||false) and number.value = (float||int||string) numex = function(str){

我正在将CSV文件转换为本地2D阵列。我想知道是否有更好的方法将字符串转换为float/int,而不是使用regex后跟parseFloat()/parseInt

想法/建议

// numex() - checkes to see if the string (str) is a number
// returns number.valid (true||false) and number.value = (float||int||string)
numex = function(str){
  number = {};
  number.valid = false;
  number.value = str;
  // if we see a number then convert it to a floating point or integer
  if((number.value.search(/[^0-9^\.^\$^\%^\-^\"^,^ ]+/) < 0) && str.length > 0) {  
    number.valid = true;
    number.value = str.replace(/[^\-^0-9^\.]+/g, ''); // TODO add % coversion code for example if we see a 10% covert it to .1
    if(number.value.search(/[\.]/) >= 0) {  
       number.value = parseFloat(number.value); // replace floating point
    } else {
       number.value = parseInt(number.value); // replace integers
    }
  }
  return number; // number.valid = true or false;
}

var num = numex("1.101");
alert(num.value);
//numex()-检查字符串(str)是否为数字
//返回number.valid(true | | false)和number.value=(float | | int | string)
numex=函数(str){
数字={};
number.valid=false;
number.value=str;
//如果我们看到一个数字,那么将其转换为浮点或整数
如果((number.value.search(/[^0-9^.^$^%^-^^,^]+/)<0)和&str.length>0){
number.valid=true;
number.value=str.replace(//[^-^0-9^.]+/g');//TODO添加%coversion代码,例如,如果我们看到10%的转换为.1
如果(number.value.search(/[\.]/)>=0){
number.value=parseFloat(number.value);//替换浮点
}否则{
number.value=parseInt(number.value);//替换整数
}
}
返回编号;//number.valid=true或false;
}
var num=numex(“1.101”);
警报(数值);

我认为您根本不需要使用regexp。请尝试以下方法:

var num = {};  
num.value = new Number(str);  
num.valid = !isNaN(num.value);

数字构造函数比parseInt和parseFloat更严格,因为它不接受像
10aaa
1.2bbb
这样的字符串,所以不需要执行regexp检查。

我大大简化了代码,并使用了与LeZuse类似的方法

isNaN(值)| |值=“”

if(isNaN(value)| | value==“”){return str;}else{return false;};