来自字符串中间的parseFloat()

时间:2016-11-25 11:06:32

标签: javascript parseint parsefloat

当想要从“Sometext 330”这样的字符串“parseInt或parseFloat”时,我总是有一个“NaN”

Var a = "Sometext 330"
return parseFloat(a);

它将返回“NaN”,但我需要整数或浮点数330

3 个答案:

答案 0 :(得分:7)

您可以先清理字符串,这样在解析数字之前,只有数字会保留在字符串中。

  

编辑:现在它更安全,因为它会接受数字类型而不会爆炸。



var a = "Sometext 330"

function safeParseFloat(val) {
  return parseFloat(isNaN(val) ? val.replace(/[^\d\.]+/g, '') : val)
}

function superSafeParseFloat(val) {
  if (isNaN(val)) {
    if ((val = val.match(/([0-9\.,]+\d)/g))) {
      val = val[0].replace(/[^\d\.]+/g, '')
    }
  }
  return parseFloat(val)
}

console.log(
  safeParseFloat(a),
  safeParseFloat(2000.69)
)

console.log(
  superSafeParseFloat('blah $2,000,000.69 AUD'),
  superSafeParseFloat('blah $8008 USD'),
  superSafeParseFloat('NotANumber'),
  superSafeParseFloat(8008.69),
  superSafeParseFloat('... something 500.5... test')
)




答案 1 :(得分:1)

如果您的用例始终相同,您也可以拆分字符串。

var str = "test 900";
var split = str.split(' ');
// Loop through the split array
split.forEach(function(item){
  // If the split is not NaN
  if(!isNaN(item)){
    // Heres your number
    console.log(item);
  }
});

答案 2 :(得分:0)

更优雅的方式:

Var a = "Sometext 330"
return parseFloat(a.match(/\d+$/)[0]);