0

CSVファイルをローカルの2D配列に変換しています。正規表現の後にparseFloat()/ parseIntを使用するのではなく、文字列をfloat/intに変換するより良い方法があるかどうかを知りたいと思いました。

アイデア/提案?

// 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);

10aaa数値コンストラクターは、のような文字列を受け入れないという点でparseIntやparseFloatよりも厳密である1.2bbbため、正規表現チェックを実行する必要はありません。

于 2012-11-18T04:23:36.593 に答える