Determine if string starts with letters A through

2020-03-11 06:58发布

I've got a simple java assignment. I need to determine if a string starts with the letter A through I. I know i have to use string.startsWith(); but I don't want to write, if(string.startsWith("a")); all the way to I, it seems in efficient. Should I be using a loop of some sort?

6条回答
Explosion°爆炸
2楼-- · 2020-03-11 07:17

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

should be the easiest version...

查看更多
劳资没心,怎么记你
3楼-- · 2020-03-11 07:23
if ( string.charAt(0) >= 'A' && string.charAt(0) <= 'I' )
{
}

should do it

查看更多
Luminary・发光体
4楼-- · 2020-03-11 07:25
char c=string.toLowerCase().charAt(0);
if( c >= 'a' && c <= 'i' )
    ...

This makes it easy to extract it as a method:

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;
}

which is HIGHLY preferred to any inline solution. For the win, tag it as final so java inlines it for you and gives you better performance than a coded-inline solution as well.

查看更多
神经病院院长
5楼-- · 2020-03-11 07:28

Try

string.charAt(0) >= 'a' && string.charAt(0) <= 'j'
查看更多
混吃等死
6楼-- · 2020-03-11 07:29

You don't need regular expressions for this.

Try this, assuming you want uppercase only:

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

If you do want a regex solution however, you can use this (ideone):

if (string.matches("^[A-I].*$")) { ... }
查看更多
Root(大扎)
7楼-- · 2020-03-11 07:36

How about this for brevity?

if (0 <= "ABCDEFGHI".indexOf(string.charAt(0))) {
    // string starts with a character between 'A' and 'I' inclusive
}
查看更多
登录 后发表回答