Java—检查字符串是否包含双精度值的最快方法

Java—检查字符串是否包含双精度值的最快方法,java,regex,arrays,string,double,Java,Regex,Arrays,String,Double,我正在阅读许多大型文本文件,我必须检查每个文本片段是否包含双倍值。我目前使用的正则表达式代码导致我的程序运行非常缓慢,因为我总共检查了100亿个字符串。我知道,由于我正在检查大量字符串,我的程序肯定会运行缓慢。但是,有没有一种更有效、更快的方法来检查字符串是否为双精度值,从而减少程序的运行时间?谢谢 if (string[i].matches(".*\\d.*")) { ..... } 此外,文本文件中的字符串在我检查它们之前会被读入数组,因此不会浪费时间不断地读取文本文件。使用和类: 这句

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

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

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

使用和类:

这句话

"\\d+\\.\\d+([eE]\\d+)?"
允许1.1或1.1e1或1.1e1格式


请注意,Java允许更多示例1。或1。或0x1p1

Do
matcher.find(\\d”)
。您的正则表达式速度很慢,因为尝试运行正则表达式
*\\d.
的性能很差-您有两个
*
可以尝试使用0到N个字符的任意长度<在正则表达式上的code>find将从每个位置开始查找。除非您出于其他原因需要内存中的字符串,否则您将字符串读取到内存中,以存储这些字符串的内存使用为代价,从而在性能上获得不明确的增益。在检查之前,可能值得尝试避免将字符串读入数组。您还应该使用“查找”而不是“匹配项”,以及使用“查找”而不是“代码”>*\\d.*来提高速度
"\\d+\\.\\d+([eE]\\d+)?"