我需要检查 String 对象是否包含()各种子字符串,并根据结果执行不同的代码片段。目前我有一系列的 else if。如果可能的话,我想将其转换为开关。有没有办法做到这一点?
现在:
if (SomeString.contains("someSubString")) {
. . . do something
} else if (SomeString.contains("anotherSubString")) {
. . . do something else
} else if (SomeString.contains("yetanotherSubString")) {
. . . do something even more different
}
.
.
.
当我遇到这样的情况,并且真的不想使用else if
,我做了这样的事情:
String[] cases = {"someSubString", "anotherSubString", "yetanotherSubString"};
int i;
for(i = 0; i < cases.length; i++)
if(SomeString.contains(cases[i])) break;
switch(i) {
case 0: //someSubString
System.out.println("do something");
break;
case 1: //anotherSubString
System.out.println("do something else");
break;
case 2: //yetanotherSubString
System.out.println("do something even more different");
break;
default:
System.out.println("do nothing");
}
当然,这有一些缺点。对于初学者来说,如果您在除末尾之外的任何位置添加其他字符串,所有索引都会发生变化,并且您必须手动更正。不过,我想我已经使用过类似的东西一两次,并且认为它使代码更具可读性。据推测,这些指数在程序中具有一定的意义,从而将0...someSubString
以对问题有意义的方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)