一般的Javascript库将字符串解析为数字?

时间:2013-03-14 19:19:42

标签: javascript

编写函数以读取大量CSV数据集。 可以将CSV解析为字符串数组(请参阅Javascript code to parse CSV data)。

现在想要每个列,如果它们都可以转换为数字,则将它们转换为Number,否则保留为String。但如果没有,请将它们留作字符串。

当然,数字可以有多种格式,有些可能依赖于语言环境。我想要一个像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函数处理,但似乎我不应该自己为这些中的每一个发明正则表达式。

可能有一个图书馆做得好吗?我的Google搜索技巧似乎在这里失败了。

处理常见日期格式会更好。

2 个答案:

答案 0 :(得分:1)

正如您和其他人所指出的,这个问题可以通过正则表达式来解决。但是如果你想让一个库为你做,jQuery Number Formatter库应该允许你做你想要的。它处理数字(包括百分比)但不处理日期:https://code.google.com/p/jquery-numberformatter/

它需要jQuery和jshashtable。

答案 1 :(得分:1)

只需使用简单的正则表达式并将其包装起来,非常简单

例如:

function parseToNumeric(value) {
    return parseFloat(value.replace(/[\$,%]/g, ''));
}