1. ホーム
  2. java

文字列がLongにパース可能かどうかをtry-catchなしでチェックする?

2023-09-18 16:37:18

質問

Long.parseLong("string") は、文字列がlongに解析可能でない場合、エラーを投げます。 を使用するよりも高速に文字列を検証する方法はありますか? try-catch ? ありがとうございます。

どのように解決するのですか?

複雑な正規表現を作成することもできますが、それは意味がありません。ここで例外を使うのはごく普通のことです。

文字列の中に整数があると思い込んでいたら、実は別のものがあったというのは、当然の例外的状況です。例外は投げられ、適切に処理されるべきです。

もし、内部を見ると parseLong のコードの中を見ると、多くの異なる検証や操作があることがわかります。もし解析の前にこれらすべてを行おうとすると、パフォーマンスが低下します(何百万もの数字を解析するという話であれば、そうでなくても問題ないため)。ですから、あなたができる唯一のことは が本当に必要な場合 例外を回避してパフォーマンスを向上させるために唯一できることは、コピー parseLong の実装を自分自身の関数にコピーし、対応するすべてのケースで例外を投げる代わりにNaNを返すことです。