我知道这个问题是基本的,但我正在寻找一个不太笨拙的方法,以下if语句:
if ((sOne.Contains('*')) || (sOne.Contains('/')) || (sOne.Contains('-')) || (sOne.Contains('+')) || (sOne.Contains('%'))){
Run Code Online (Sandbox Code Playgroud)
我还应该注意,sOne.Contains()参考以下代码......
public boolean Contains(char key) {
// Checks stack for key
boolean retval = arrs.contains(key);
return retval;
}
Run Code Online (Sandbox Code Playgroud)
还应该指出的是,这五个字符永远不会改变.
您可以在字符数组上使用break-each循环:
for (char c : "*/-+%".toCharArray()) {
if (sOne.Contains(c)) {
// ...
break;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您非常关注性能,可能还需要提取toCharArray()调用并将结果缓存为static final char[]常量.
您甚至可以使用此策略在您的sOne对象上定义其他便捷方法,例如ContainsAny或ContainsAll(以新浪马德里为名称ContainsAny):
public boolean ContainsAny (CharSequence keys) {
for (int i = 0; i < keys.length; i++)
if (Contains(keys.charAt(i)) return true;
return false;
}
public boolean ContainsAll (CharSequence keys) {
for (int i = 0; i < keys.length; i++)
if (!Contains(keys.charAt(i)) return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
用法看起来像这样:
if (sOne.ContainsAny("*/-+%")) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |