字符串 ||在索引中

String || in indexOf

我有一个问题:

int index = abc.indexOf("def"||"ghi");

我尝试使用上面的代码在字符串 "abc" 中搜索 "def" 或 "ghi"。但这不起作用。出现错误 "Operator || cannot be applied to 'java.lang.String', 'java.land.String'".

我该如何解决这个问题?

如编译器所述,|| 条件运算符在那里使用不正确。

这就是你想要的:

int index = abc.contains("def") ? abc.indexOf("def"): 
             abc.contains("ghi")? abc.indexOf("ghi"): -1;

if(index != -1 ){
   //do someting
}
int index = abc.indexOf("def");
if (index == -1) {
    index = abc.indexOf("ghi");
} else {
    // something else
}

您也可以使用 Matcher class 实现它,如下所示:

Pattern pattern = Pattern.compile("(def)|(ghi)");
Matcher matcher = pattern.matcher(abc);

int index;
if (matcher.find()) {
    index = matcher.start();
} else {
    index = -1;
}

基本上你编译一个特定的正则表达式模式来匹配你想要匹配的序列。 matcher.find() 将查找第一次出现的模式,如果找到,您可以使用 matcher.start() 获取匹配模式的起始索引。