将字符串解析为数字的通用Javascript库?
编写一个函数来读取大量CSV数据集。 可以很好地将CSV解析为字符串数组(请参阅) 现在,我想可以将每一列都转换为数字,如果它们都可以转换为数字,则将它们转换为数字,否则保留为字符串。但如果不是,就把它们作为字符串 当然,数字可以有多种格式,有些可能取决于语言环境。我想要一个像parseFloat这样的函数来识别这些:将字符串解析为数字的通用Javascript库?,javascript,Javascript,编写一个函数来读取大量CSV数据集。 可以很好地将CSV解析为字符串数组(请参阅) 现在,我想可以将每一列都转换为数字,如果它们都可以转换为数字,则将它们转换为数字,否则保留为字符串。但如果不是,就把它们作为字符串 当然,数字可以有多种格式,有些可能取决于语言环境。我想要一个像parseFloat这样的函数来识别这些: "2.0" -> 2.0 "2" -> 2.0 "1,532" -> 1532 (in US at least) "$2.00"
"2.0" -> 2.0
"2" -> 2.0
"1,532" -> 1532 (in US at least)
"$2.00" -> 2.0
"0.02" -> 0.02
"2%" -> 0.02
"" - null
"NaN" -> NaN
"""NaN""" -> String
"2 years old" -> String
"ABC123" -> String
parseFloat(val)
不太适用于此目的:
parseFloat("1,523") === 1
parseFloat("2%") === 2 // could live with this
parseFloat("$2.25") === NaN
这显然太难指望本机ECMAscript函数来处理,但似乎我也不应该自己为每一个函数发明正则表达式
有没有一个图书馆能做到这一点?我的谷歌搜索技能似乎在这里失败了
处理通用日期格式会更好 正如您和其他人所指出的,这个问题可以用正则表达式解决。但是,如果您想要一个库来为您执行此操作,jQuery数字格式化程序库应该允许您执行您想要的操作。它处理数字(包括百分比),但不处理日期:
它需要jQuery和jshashtable。只需使用一个简单的正则表达式并将其打包,非常简单 例如:
function parseToNumeric(value) {
return parseFloat(value.replace(/[\$,%]/g, ''));
}
你可以自己做。替换除十进制之外的所有非数字,然后通过parseFloat运行它。这是很基本的东西,很优雅。我不需要解析不同的格式,只需要去掉困难。库可以处理特定于语言环境的格式,但不需要这些格式。因此,我会接受另一个答案,其中提到了一个声誉良好的图书馆,但实际上使用这种方法。谢谢