Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串解析为数字的通用Javascript库?_Javascript - Fatal编程技术网

将字符串解析为数字的通用Javascript库?

将字符串解析为数字的通用Javascript库?,javascript,Javascript,编写一个函数来读取大量CSV数据集。 可以很好地将CSV解析为字符串数组(请参阅) 现在,我想可以将每一列都转换为数字,如果它们都可以转换为数字,则将它们转换为数字,否则保留为字符串。但如果不是,就把它们作为字符串 当然,数字可以有多种格式,有些可能取决于语言环境。我想要一个像parseFloat这样的函数来识别这些: "2.0" -> 2.0 "2" -> 2.0 "1,532" -> 1532 (in US at least) "$2.00"

编写一个函数来读取大量CSV数据集。 可以很好地将CSV解析为字符串数组(请参阅)

现在,我想可以将每一列都转换为数字,如果它们都可以转换为数字,则将它们转换为数字,否则保留为字符串。但如果不是,就把它们作为字符串

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

有没有一个图书馆能做到这一点?我的谷歌搜索技能似乎在这里失败了


处理通用日期格式会更好

正如您和其他人所指出的,这个问题可以用正则表达式解决。但是,如果您想要一个库来为您执行此操作,jQuery数字格式化程序库应该允许您执行您想要的操作。它处理数字(包括百分比),但不处理日期:


它需要jQuery和jshashtable。

只需使用一个简单的正则表达式并将其打包,非常简单

例如:

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

你可以自己做。替换除十进制之外的所有非数字,然后通过parseFloat运行它。这是很基本的东西,很优雅。我不需要解析不同的格式,只需要去掉困难。库可以处理特定于语言环境的格式,但不需要这些格式。因此,我会接受另一个答案,其中提到了一个声誉良好的图书馆,但实际上使用这种方法。谢谢