1. ホーム
  2. java

[解決済み] 文字列の最初の文字が数字であるかどうかを調べるには?

2022-10-18 04:57:22

質問

Javaで、文字列の最初の文字が数字であるかどうかを調べる方法はありますか?

一つの方法として

string.startsWith("1")

というように、9時までずっと上記のようなことをするのですが、これは非常に非効率的なようです。

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

Character.isDigit(string.charAt(0))

なお を使用すると 任意の ユニコード数字 で、0-9だけではありません。好むかもしれません。

char c = string.charAt(0);
isDigit = (c >= '0' && c <= '9');

あるいは、より遅い正規表現による解決策。

s.substring(0, 1).matches("\\d")
// or the equivalent
s.substring(0, 1).matches("[0-9]")

しかし、これらの方法のいずれにおいても、まず文字列が空でないことを確認する必要があります。もしそうであれば charAt(0)substring(0, 1)StringIndexOutOfBoundsException . startsWith にはこの問題はありません。

条件全体を1行にし、長さのチェックを避けるには、正規表現を次のように変更すればよい。

s.matches("\\d.*")
// or the equivalent
s.matches("[0-9].*")

プログラムのタイトなループの中で条件が表示されない場合、正規表現を使用することによる小さなパフォーマンスのヒットは、おそらく目立たないでしょう。