从字符串中间开始的 parseFloat()
parseFloat() from the middle of the string
当我想从 "Sometext 330"
这样的字符串 "parseInt or parseFloat" 时,我总是有一个 "NaN"
Var a = "Sometext 330"
return parseFloat(a);
它会 return "NaN" 但我需要整数或浮点数 330
您可以先清理字符串,这样在解析数字之前只有数字保留在字符串中。
edit: now it's even safer as it will accept Number types without blowing up.
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 ,000,000.69 AUD'),
superSafeParseFloat('blah 08 USD'),
superSafeParseFloat('NotANumber'),
superSafeParseFloat(8008.69),
superSafeParseFloat('... something 500.5... test')
)
如果您的用例始终相同,您也可以拆分字符串。
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);
}
});
更优雅的方式:
Var a = "Sometext 330"
return parseFloat(a.match(/\d+$/)[0]);
如果你想让它解析 floats/to 浮点数,你可以使用这个正则表达式:
var numberStr = "fea0.69atrg";
return parseFloat(numberStr.match(/\d+\.\d+/)[0]);
这里是 return 420.69。
当我想从 "Sometext 330"
这样的字符串 "parseInt or parseFloat" 时,我总是有一个 "NaN"Var a = "Sometext 330"
return parseFloat(a);
它会 return "NaN" 但我需要整数或浮点数 330
您可以先清理字符串,这样在解析数字之前只有数字保留在字符串中。
edit: now it's even safer as it will accept Number types without blowing up.
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 ,000,000.69 AUD'),
superSafeParseFloat('blah 08 USD'),
superSafeParseFloat('NotANumber'),
superSafeParseFloat(8008.69),
superSafeParseFloat('... something 500.5... test')
)
如果您的用例始终相同,您也可以拆分字符串。
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);
}
});
更优雅的方式:
Var a = "Sometext 330"
return parseFloat(a.match(/\d+$/)[0]);
如果你想让它解析 floats/to 浮点数,你可以使用这个正则表达式:
var numberStr = "fea0.69atrg";
return parseFloat(numberStr.match(/\d+\.\d+/)[0]);
这里是 return 420.69。