Определите, начинается ли строка буквами от A до I - PullRequest
9 голосов
/ 17 декабря 2011

У меня есть простое назначение java.Мне нужно определить, начинается ли строка с буквы от A до I. Я знаю, что должен использовать string.startsWith ();но я не хочу писать, if(string.startsWith("a")); вплоть до меня, это кажется эффективным.Должен ли я использовать какой-то цикл?

Ответы [ 6 ]

27 голосов
/ 17 декабря 2011

Для этого вам не нужны регулярные выражения.

Попробуйте, если вы хотите использовать только заглавные буквы:

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

Если вы хотите использовать решение регулярных выражений, вы можете использовать это( ideone ):

if (string.matches("^[A-I].*$")) { ... }
3 голосов
/ 17 декабря 2011
if ( string.charAt(0) >= 'A' && string.charAt(0) <= 'I' )
{
}

должен это сделать

2 голосов
/ 17 декабря 2011

Как насчет краткости?

if (0 <= "ABCDEFGHI".indexOf(string.charAt(0))) {
    // string starts with a character between 'A' and 'I' inclusive
}
1 голос
/ 17 декабря 2011
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;
}

, который НАСТОЯТЕЛЬНО предпочтителен для любого встроенного решения. Чтобы выиграть, пометьте его как окончательный, чтобы java встроил его для вас и обеспечил лучшую производительность, чем кодовое встроенное решение.

1 голос
/ 17 декабря 2011

Попробуйте

string.charAt(0) >= 'a' && string.charAt(0) <= 'j'
0 голосов
/ 17 декабря 2011

if (string.toUpperCase (). CharAt (0)> = 'A' && string.toUpperCase (). CharAt (0) <= 'I') </p>

должна быть самой простой версией ...

...