编写一个函数来读取大量 CSV 数据集。可以很好地将 CSV 解析为字符串数组(请参阅解析 CSV 数据的 Javascript 代码)。
现在想可以每一列,如果它们都可以转换为数字,则将它们转换为数字,否则保留为字符串。但如果没有,请将它们保留为字符串。
当然,数字可以有多种格式,有些可能取决于语言环境。我想要一个像 parseFloat 这样可以识别这些的函数:
"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 函数能够处理,但似乎我也不应该自己为每一个发明正则表达式。
可能有一个图书馆做得很好吗?我的谷歌搜索技能在这里似乎失败了。
处理常见的日期格式会更好。