3

我正在阅读许多大型文本文件,我必须检查每个文本片段是否包含双精度值。我目前使用的正则表达式代码导致我的程序运行非常缓慢,因为我总共检查了 100 亿个字符串。我知道由于我要检查的字符串数量众多,我的程序运行速度必然会很慢。但是有没有更有效和更快的方法来检查一个字符串是否是一个双精度值,从而减少程序的运行时间?谢谢

if (string[i].matches(".*\\d.*")) {

.....
}

此外,文本文件中的字符串在我检查它们之前被读入数组,因此不会浪费时间不断地读取文本文件。

4

2 回答 2

4

使用PatternMatcher类:

public static final Pattern DOUBLE = Pattern.compile("\\d");

...

if (DOUBLE.matcher(string[i]).find()) {
    ...
}
于 2013-03-05T01:37:13.493 回答
0

这个表达

"\\d+\\.\\d+([eE]\\d+)?"

允许 1.1 或 1.1e1 或 1.1E1 格式。

请注意,Java 允许更多,例如 1. 或 1. 或 0x1p1

于 2013-03-05T02:05:37.917 回答