2016-01-22 84 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