我正在读取许多大型文本文件,我必须检查每个文本片段是否包含双精度值。目前我使用的正则表达式代码导致程序运行非常慢,因为总共要检查100亿个字符串。由于我要检查的字符串数量很大,所以我的程序肯定会运行缓慢。但是有没有更有效和更快速的方法来检查一个字符串是否为双精度值,从而减少程序的运行时间?谢谢
if (string[i].matches(".*\\d.*")) {
.....
}
此外,在检查字符串之前,文本文件中的字符串被读入数组中,因此不会浪费时间不断地读取文本文件。
我正在读取许多大型文本文件,我必须检查每个文本片段是否包含双精度值。目前我使用的正则表达式代码导致程序运行非常慢,因为总共要检查100亿个字符串。由于我要检查的字符串数量很大,所以我的程序肯定会运行缓慢。但是有没有更有效和更快速的方法来检查一个字符串是否为双精度值,从而减少程序的运行时间?谢谢
if (string[i].matches(".*\\d.*")) {
.....
}
此外,在检查字符串之前,文本文件中的字符串被读入数组中,因此不会浪费时间不断地读取文本文件。
matcher.find("\\d")
。你的正则表达式很慢,因为尝试运行.*\\d.*
的正则表达式性能较差 - 你有两个.*
可以尝试匹配任意长度从0到N个字符。在正则表达式上执行find
将会从每个位置开始查找。 - Patashu