0

我正在将 CSV 文件转换为本地二维数组。我想知道是否有更好的方法将字符串转换为浮点数/整数,而不是使用正则表达式,然后使用 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);
4

2 回答 2

0

我认为您根本不需要使用正则表达式。试试这个:

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

Number 构造函数比 parseInt 和 parseFloat 更严格,因为它不接受像10aaaor1.2bbb这样的字符串,因此不需要执行正则表达式检查。

于 2012-11-18T04:23:36.593 回答
0

我大大简化了代码,并使用了与 LeZuse 类似的东西。

isNaN(值) || 价值 == ""

https://github.com/designpro/jCSV

于 2013-05-28T03:16:06.973 回答