Java检查字符串变量长度(带子串)

Aur*_*x22 1 java string if-statement substring case

我有一个String变量,每次运行时都可以有不同的长度.有了它,我会检查它的开头,例如:

 public void defineLocation(){
            if (newLocation.substring(0,2).equals("DO") || newLocation.substring(0,2).equals("30") || newLocation.substring(0,2).equals("21")) {
                locationInDc = "DOOR";
            } else if (newLocation.substring(0,2).equals("VT") || newLocation.substring(0,3).equals("MUF")) {
                locationInDc = "BLOUBLOU";
            } else if (newLocation.substring(0,3).equals("MAH")) {
                locationInDc = "BLOBLO";           
            } else if (newLocation.substring(0,7).equals("Zone 72") || newLocation.substring(0,7).equals("Zone 70")){
                locationInDc = "BLOFBLOF";
}
Run Code Online (Sandbox Code Playgroud)

我知道这不是最有效的方式,它必然会破坏,如果我的变量不在前3个检查中的任何一个但仍然具有比7更少的字符,那么它将抛出错误.

有没有更"正确"的方法来做到这一点?我应该首先检查字符串包含多少个字符,然后将其指向正确的检查/"ifs"?谢谢.

Era*_*ran 8

由于所有的检查都测试字符串开头,使用startsWith替代结合substringequals,你会不会担心newLocation太短.

例如,替换

if (newLocation.substring(0,2).equals("DO") || newLocation.substring(0,2).equals("30") || newLocation.substring(0,2).equals("21")) 
Run Code Online (Sandbox Code Playgroud)

if (newLocation.startsWith ("DO") || newLocation.startsWith ("30") || newLocation.startsWith ("21")) 
Run Code Online (Sandbox Code Playgroud)

  • 我不明白为什么有人下来投票.. !!! OP问任何其他正确的方法来做到这一点,就是这样. (4认同)