12

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

4

6 に答える 6

33

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

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

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

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

if (string.matches("^[A-I].*$")) { ... }
于 2011-12-16T20:57:08.277 に答える
3
if ( string.charAt(0) >= 'A' && string.charAt(0) <= 'I' )
{
}

やるべき

于 2011-12-16T20:56:58.463 に答える
2

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

if (0 <= "ABCDEFGHI".indexOf(string.charAt(0))) {
    // string starts with a character between 'A' and 'I' inclusive
}
于 2011-12-16T21:08:38.600 に答える
1

試す

string.charAt(0) >= 'a' && string.charAt(0) <= 'j'
于 2011-12-16T21:00:05.593 に答える
1
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 がインライン化し、コード化されたインライン ソリューションよりも優れたパフォーマンスが得られるようにします。

于 2011-12-16T21:00:47.250 に答える
0

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

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

于 2011-12-16T21:36:16.010 に答える