2016-01-22 36 views
0

我正在基于结构替换创建自己的检查。 比如我要让转化代码一样的检查:如何排除Intellij IDEA中的代码块结构替换

if (!$Map$.containsKey($key$)){ 
    $Map$.put($key$, $value$); 
} 

if ($Map$.get($key$) == null){ 
    $Map$.put($key$, $value$); 
} 

$Map$.putIfAbsent($key$, $value$); 

但我不希望它的代码反应,如:

if (!$Map$.containsKey($key$)){ 
    $Map$.put($key$, $value$); 
} 
else { 
    // any logic 
} 

我试图用

if (!$Map$.containsKey($key$)){ 
    $Map$.put($key$, $value$); 
} 
$else$ 

带有选项文本“其他”,但它没有工作。

可能吗?另外,我必须用相同的替换结果进行两次不同的检查。我们可以使用多个搜索模式吗?

UPDATE

我试图替换下一个模式

$Iterable$.forEach($value$ -> { 
    if ($condition$) { 
     $statement$; 
    } 
}); 

$Iterable$.stream() 
     .filter($value$ -> $condition$) 
     .forEach($value$ -> $statement$); 

但更换后我得到:

$Iterable$.stream() 
     .filter($value$ -> $condition$) 
     .forEach($value$ -> $statement$;); 

是否可以删除“;”从替换结果?

+0

关于*更新*;它看起来像是遇到了结构搜索中的一些错误。似乎目前这是不可能的。 –

+0

更新您的更新:错误已修复。在IntelliJ IDEA 2017.2中,您的结构替换不再生成额外的分号。 –

回答

0

使用搜索模板是这样的:

if (!$Map$.containsKey($key$)){ 
    $Map$.put($key$, $value$); 
} else { 
    $statement$; 
} 

编辑变量和statement最小和最大数设置为0

目前无法为单个结构搜索检测使用多种搜索模式。

+0

它的工作原理。非常感谢。 也你知道是否有可能使用import来替换? 例如替换 $ String $ == null || $ String $ .isEmpty()to org.apache.lang3.StringUtils.isEmpty($ String $) – Monk3D

+0

在结构替换对话框中启用“缩短完全限定名称”复选框? –

+0

谢谢,我昨天试过了。但它不起作用,也许我有另一个问题。您可以在更新中回答更多问题,因为您熟悉这个主题。 – Monk3D