3

多くの大きなテキスト ファイルから読み込んでおり、テキストの各スニペットに double 値が含まれているかどうかを確認する必要があります。現在使用している正規表現コードにより、プログラムの実行が非常に遅くなります。これは、合計で 100 億の文字列をチェックしているためです。チェックする文字列の数が多いため、プログラムの実行速度が遅くなることはわかっています。しかし、String が double 値であるかどうかをチェックして、プログラムの実行時間を短縮する、より効率的で迅速な方法はありますか? ありがとう

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

.....
}

また、テキスト ファイルからの文字列は、チェックする前に配列に読み込まれるため、テキスト ファイルを絶えず読み取るために時間が無駄になることはありません。

4

2 に答える 2

4

PatternおよびMatcherクラスを使用します。

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 に答える