我有一个问题:
int index = abc.indexOf("def"||"ghi");
我尝试上面的代码在字符串“abc”中搜索“def”或“ghi”。但这不起作用。有一个错误“运算符||不能应用于'java.lang.String','java.land.String'”。
我该如何解决这个问题?
答案 0 :(得分:4)
正如编译器所述,DECLARE @X TABLE (val VARCHAR(8));
INSERT INTO @X (val) VALUES (NULL), ('abc'),('4'),('%&Crazy')
Select
val AS ASIS
, ISNULL(val, 0) AS firstCastWillWorkForNullsNotMuchElse
, CASE WHEN ISNUMERIC(ISNULL(val, 0)) <> 0 THEN ISNULL(val, 0) ELSE 0 END AS secondCastToCheckNumeric
, CAST(CASE WHEN ISNUMERIC(ISNULL(val, 0)) <> 0 THEN ISNULL(val, 0) ELSE 0 END AS MONEY) AS thirdCastDoesItAll
From @X
条件运算符在那里使用不正确。
这就是你想要的:
||
答案 1 :(得分:0)
Log4j2
答案 2 :(得分:0)
您也可以使用Matcher
类来实现它,如下所示:
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()
来获取匹配模式的起始索引。