Java Intellij结构搜索和替换所有形式的if语句
我写了这样的搜索:Java Intellij结构搜索和替换所有形式的if语句,java,intellij-idea,structural-search,Java,Intellij Idea,Structural Search,我写了这样的搜索: preparedStatement = connect.prepareStatement($sql$); $code1$; $resultSet$ = preparedStatement.executeQuery(); $code2$; if ($resultSet$.next()) { $code3$; } try (PreparedStatement preparedStatement = connect.prepareStatement($sql$)) {
preparedStatement = connect.prepareStatement($sql$);
$code1$;
$resultSet$ = preparedStatement.executeQuery();
$code2$;
if ($resultSet$.next()) {
$code3$;
}
try (PreparedStatement preparedStatement = connect.prepareStatement($sql$)) {
$code1$;
try (ResultSet $resultSet$ = preparedStatement.executeQuery()) {
$code2$;
if ($resultSet$.next()) {
$code3$;
}
}
}
PreparedStatement $preparedStatement$ = $connect$.prepareStatement($sql$);
$code1$;
$resultSet$ = $preparedStatement$.executeQuery();
$code2$;
if ($resultSet$.next()) {
$code3$;
} else $nothing$
和这样的替代品:
preparedStatement = connect.prepareStatement($sql$);
$code1$;
$resultSet$ = preparedStatement.executeQuery();
$code2$;
if ($resultSet$.next()) {
$code3$;
}
try (PreparedStatement preparedStatement = connect.prepareStatement($sql$)) {
$code1$;
try (ResultSet $resultSet$ = preparedStatement.executeQuery()) {
$code2$;
if ($resultSet$.next()) {
$code3$;
}
}
}
PreparedStatement $preparedStatement$ = $connect$.prepareStatement($sql$);
$code1$;
$resultSet$ = $preparedStatement$.executeQuery();
$code2$;
if ($resultSet$.next()) {
$code3$;
} else $nothing$
当我运行这个程序时,它会找到具有if{foo}else{bar}
结构的代码。我对此很满意,但问题是如果我替换它,它会删除else{bar}
部分。我希望这个搜索/替换能够明智地处理带有else、多个else-if或它们的任意组合的if语句。有没有一种方法可以通过一次搜索和替换来实现这一点
我尝试将搜索中的
if
更改为有一个else并修复了问题,但它跳过了只有if而没有else的代码。目前无法使用单个结构搜索和替换来完成此操作。不过,你可以用两个。您已经有了查找if
s和else
工作的模式。要查找没有else
分支的if
s,可以使用如下模式:
preparedStatement = connect.prepareStatement($sql$);
$code1$;
$resultSet$ = preparedStatement.executeQuery();
$code2$;
if ($resultSet$.next()) {
$code3$;
}
try (PreparedStatement preparedStatement = connect.prepareStatement($sql$)) {
$code1$;
try (ResultSet $resultSet$ = preparedStatement.executeQuery()) {
$code2$;
if ($resultSet$.next()) {
$code3$;
}
}
}
PreparedStatement $preparedStatement$ = $connect$.prepareStatement($sql$);
$code1$;
$resultSet$ = $preparedStatement$.executeQuery();
$code2$;
if ($resultSet$.next()) {
$code3$;
} else $nothing$
其中$nothing$
变量上的约束(在编辑变量按钮下)为:最小/最大出现次数:
0,0
并使用替换模式省略else
分支:
try (PreparedStatement $preparedStatement$ = $connect$.prepareStatement($sql$)) {
$code1$;
try (ResultSet $resultSet$ = $preparedStatement$.executeQuery()) {
$code2$;
if ($resultSet$.next()) {
$code3$;
}
}
}
这看起来像个虫子。您可能希望在以下位置提交错误报告: