【发布时间】:2020-08-18 18:47:47
【问题描述】:
我想解析以下字符串:-3.755512109246D2 使用 javascript。
请注意,这种格式使用D 作为指数指示符,而不是通常的e 或E。
parseFloat("-3.755512109246D2")
将忽略最后一部分 (D2) 并返回 -3.755512109246。
阅读规范,我发现只有e 和E 被用作ExponentIndicator,从快速搜索看来,这些核心功能实际上是用C++ 编写的。
我在这里有什么选择?考虑到我正在解析包含不同格式数字的大文件,有时它们会有一个指数,该指数可能是e、E、d 和D。
如果我唯一的方法是重写parseFloat,那么现在它将D 和d 与E 处理相同的方式,什么是有效的实现方式?
我的第一个赌注是这样的:
var str ="-3.755512109246D2";
for(var i = 0; i < str.length; i++)
{
if(str[i] == 'd' || str[i] == 'D')
{
str[i] = 'E';
break;
}
}
var result = parseFloat(str);
有没有更好的办法?
【问题讨论】:
-
str[i]在 JavaScript 中不可赋值,因为str是一个原语。 -
JavaScript 字符串是不可变的,但你可以使用
replace。
标签: javascript parsefloat