var fNum = parseFloat("32.23.45");
导致32.23,但我需要从最后一个小数点开始的字符串:23.45
例如,以下字符串应返回以下值:
答案 0 :(得分:5)
一个相当直接的解决方案:
function toFloat(s) {
return parseFloat(s.match(/\d+(\.|$)/g).slice(-2).join('.'));
}
例如:
toFloat("32.23.45") // 23.45
toFloat("12.234.43.234") // 43.234
toFloat("345.234.32.34") // 32.34
toFloat("234.34.34.234w") // 34.34
更新:这是一个替代版本,可以更有效地处理混合了非数字的字符串。
function toFloat(s) {
return parseFloat(s.match(/.*(\.|^)(\d+\.\d+)(\.|$)/)[2]);
}
答案 1 :(得分:0)
以下内容将完全符合您的要求(我假设最后一个应该返回34.234,而不是34.24)。
alert (convText("12.234.43.234"));
alert (convText("345.234.32.34"));
alert (convText("234.34.34.234w"));
function convText(text) {
var offset = text.length - 1;
var finished = false;
var result = '';
var nbrDecimals = 0;
while(!finished && offset > -1) {
if(!isNaN(text[offset]) || text[offset] === '.') {
if(text[offset] === '.') {
nbrDecimals++;
}
if(nbrDecimals > 1) {
finished = true;
} else {
result = text[offset] + result;
}
}
offset--;
}
return result;
}