web-dev-qa-db-ja.com

文字列がA〜Iの文字で始まるかどうかを判別

簡単なJava=割り当てがあります。文字列がA〜Iの文字で始まるかどうかを判断する必要があります。string.startsWith();を使用する必要があることはわかっていますが、私はしません。書きたいのですが、if(string.startsWith("a"));はずっと効率的です。何らかのループを使用する必要がありますか?

11
Archey

これには正規表現は必要ありません。

大文字のみが必要だと仮定して、これを試してください。

char c = string.charAt(0);
if (c >= 'A' && c <= 'I') { ... }

ただし、正規表現ソリューションが必要な場合は、これを使用できます( ideone ):

if (string.matches("^[A-I].*$")) { ... }
30
Mark Byers
if ( string.charAt(0) >= 'A' && string.charAt(0) <= 'I' )
{
}

やるべきだ

3

簡潔にするためにこれはどうですか?

if (0 <= "ABCDEFGHI".indexOf(string.charAt(0))) {
    // string starts with a character between 'A' and 'I' inclusive
}
2
rsp

試す

string.charAt(0) >= 'a' && string.charAt(0) <= 'j'
1
Jin
char c=string.toLowerCase().charAt(0);
if( c >= 'a' && c <= 'i' )
    ...

これにより、メソッドとして簡単に抽出できます。

public static boolean startsBetween(String s, char lowest, char highest) {
    char c=s.charAt(0);
    c=Character.toLowerCase(c);  //thx refp
    return c >= lowest && c <= highest;
}

これは、どのインラインソリューションよりも非常に好まれます。勝つために、それをfinalとしてタグ付けして、Javaがインライン化し、コード化されたインラインソリューションよりも優れたパフォーマンスを提供します。

1
Bill K

if(string.toUpperCase()。charAt(0)> = 'A' && string.toUpperCase()。charAt(0)<= 'I')

最も簡単なバージョンである必要があります...