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 回答