【发布时间】:2012-04-18 11:04:42
【问题描述】:
有没有可能在 Java for Android 中做这样的事情(这是一个伪代码)
IF (some_string.equals("john" OR "mary" OR "peter" OR "etc."){
THEN do something
}
?
目前这是通过多个String.equals() 条件完成的,其中||。
【问题讨论】:
有没有可能在 Java for Android 中做这样的事情(这是一个伪代码)
IF (some_string.equals("john" OR "mary" OR "peter" OR "etc."){
THEN do something
}
?
目前这是通过多个String.equals() 条件完成的,其中||。
【问题讨论】:
可能性:
使用String.equals():
if (some_string.equals("john") ||
some_string.equals("mary") ||
some_string.equals("peter"))
{
}
使用正则表达式:
if (some_string.matches("john|mary|peter"))
{
}
在集合中存储要匹配的字符串列表并搜索集合:
Set<String> names = new HashSet<String>();
names.add("john");
names.add("mary");
names.add("peter");
if (names.contains(some_string))
{
}
【讨论】:
Set.of("john", "mary").contains(some_string)
if (Arrays.asList("John", "Mary", "Peter").contains(name)) {
}
【讨论】:
将可接受的值保存在HashSet 中,并使用contains 方法检查您的字符串是否存在:
Set<String> accept = new HashSet<String>(Arrays.asList(new String[] {"john", "mary", "peter"}));
if (accept.contains(some_string)) {
//...
}
【讨论】:
您当前的实现是正确的。建议是不可能的,但伪代码将通过多个equal() 调用和|| 来实现。
【讨论】:
如果您为 Android KitKat 或更高版本进行开发,您还可以使用 switch 语句(请参阅:Android coding with switch (String))。例如
switch(yourString)
{
case "john":
//do something for john
case "mary":
//do something for mary
}
【讨论】:
Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enum constants are permitted 因为 Android 不支持 Java 1.7,所以这个解决方案不起作用。
break;
不,它检查字符串是否为"john" OR "mary" OR "peter" OR "etc."
你应该使用||检查
喜欢.,,if(str.equals("john") || str.equals("mary") || str.equals("peter"))
【讨论】:
Pattern p = Pattern.compile("tom"); //the regular-expression pattern
Matcher m = p.matcher("(bob)(tom)(harry)"); //The data to find matches with
while (m.find()) {
//do something???
}
也许可以使用正则表达式来查找匹配项?
或者创建一个数组
String[] a = new String[]{
"tom",
"bob",
"harry"
};
if(a.contains(stringtomatch)){
//do something
}
【讨论】: