ひよっこSEのコツコツ備忘録

システム開発に携わる中で、知識として学んだことや覚えたことを書き綴っています。

Java

【Java】数値に変換できる文字列かチェック

投稿日:2016年8月13日 更新日:

文字列を数値に変換できるかどうかのチェック。

apacheのライブラリに便利な関数があるみたいだけど、Java標準の機能だけでチェックする2つのやり方をメモ。

try-catchでNumberFormatExceptionによるチェック

これは、「とりあえず文字列を数値に変換してみよう!例外発生したらその文字列は数値じゃない!」という判断。strTargetが数値に変換できないような文字列であれば、NumberFormatExceptionが投げられるのでそれをキャッチして判定する。

サンプルコード

 

100万回実行時の処理時間

strTargetに対していきなり数値変換を行っているやり方なので、問題無く数値に変換できるような値であれば無駄が無く高速。ただし、変換に失敗する場合は例外オブジェクトを生成するコストが高いためパフォーマンスが落ちる。

100万回すべて変換成功⇒     47,964,646ns(約47ミリ秒)
100万回すべて変換失敗⇒1,370,820,732ns(約1,370ミリ秒)

 

正規表現によるチェック

もうひとつは正規表現によるチェック。srTargetが数値として妥当な文字列かどうかを正規表現でチェックして、チェックOKの場合のみ数値に変換する流れ。

サンプルコード

 

100万回実行時の処理時間

数値変換の前に正規表現により逐一チェック処理が走るため、変換成功時でも多少時間がかかる。ただし、変換不可の文字列については予め行われているチェック処理により例外の発生を防げるため、大幅な速度低下にはならない。

100万回すべて変換成功⇒709,987,365ns(約709ミリ秒)
100万回すべて変換失敗⇒493,286,375ns(約493ミリ秒)

 

どっちの方法が良いのかどうか正解はないけど、その文字列に数値以外の値が入ってくることが通常は考えられないような、念のため行うチェックのような場合はNumberFormatExceptionによるチェックで良い気がするし、数値以外の文字列が入ってくることがザラにあるような場合は予め正規表現でチェックする方が良いかな~。

-Java

執筆者:

関連記事

【Java】String型とDate型の型変換

Date型からString型、String型からDate型への変換方法。 こういった型変換はしばしば行うことがあるけど、その都度やり方を調べている気がするのでメモ。 これはSimpleDateForm …

【Java】日付妥当性チェック

画面から入力された値が日付として妥当かどうかをチェックする方法。 ここで言ってる「妥当かどうか」と言うのは、 ① そもそもそんな日付が存在するのか (2014年10月40日とか、うるう年とか・・・) …

【Java】前後のスペースを削除(trim)

文字列の前後のスペースを削除するには、trim関数を使用する。

  ただ、trim関数で削除できるのは半角スペースのみで、全 …

【Java】String型とint型の型変換

文字列と数値の型変換を行うことは結構あって、一度覚えてしまえば忘れることはないと思うけど念のためメモ。 まずは文字列を数値に変換する方法。 [crayon-5bc5a4fcdea7e112749338 …

【Java】String.formatで文字列を成形する

文字列を動的に組み立てる方法としては、

のようなやり方が一番単純。だと思う。   で、もう少しだけ可読性やら拡張性やらを考慮 …