У меня всегда есть «NaN», когда хотел «ParseInt или parseFloat» из строки, как «SOMETEXT 330»parseFloat() с середины строки
Var a = "Sometext 330"
return parseFloat(a);
и возвращает «NaN», но я необходимо целое число или float 330
У меня всегда есть «NaN», когда хотел «ParseInt или parseFloat» из строки, как «SOMETEXT 330»parseFloat() с середины строки
Var a = "Sometext 330"
return parseFloat(a);
и возвращает «NaN», но я необходимо целое число или float 330
Вы можете сначала дезинфицировать свою строку, чтобы в синтаксисе оставалась только цифра, прежде чем разбирать номер.
Редактировать: теперь это еще безопаснее, так как оно будет принимать типы номеров без взрывов.
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')
)
Вы также можете разделить строку тоже, если ваш случай использования всегда одинакова.
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]);
Конечно, так как первый символ не является числом! –
вам придется сломать строку и проверить номер, который вы не можете разобрать на эту строку, потому что он содержит текст –
Если есть только два слова, 1-й текст и 2-й число, разделите его и возьмите только числовое. Кстати, parseFloat - это функция javascript, которую вы не можете изменить. – Shubham