2012-05-15 47 views
0

我在舊的Java項目中有很多重新格式化操作。重新格式化很多類

我有超過300個由工廠創建的不同類,我想通過Eclipse插件或工具自動化更改。

我需要刪除300個類的相同參數(如上面的Foo類)並每次更改母類名稱。

例如:

public Foo extends **OldClass** { 

    public Foo(A a, **B b**){ 
     //.. 
    } 

} 

public Foo extends newClass { 

    public Foo(A a){ 
     //.. 
    } 

} 

我也想能夠 「批量查找和替換」 很多聲明。我的意思是,我想要一個帶有替換列表的工具(帶有正則表達式模式),只需一次點擊即可替換所有內容。

你知道我該怎麼做嗎?我在Windows 7系統上。

+0

對不起,我不知道爲什麼它不起作用。 –

+0

你能否澄清一下,它是否總是與所有300個文件相同的替換(例如,用'NewClass'替換'OldClass'300次),還是跨文件有所不同? – Grundlefleck

回答

1

您可以使用Eclipse的搜索對話框(按Ctrl + H)來做到這一點。在「搜索」按鈕旁邊有一個「替換」按鈕。這可用於查找多個文件中的每個事件(例如,指定每個文件名匹配*.java),並將其替換爲單個用戶操作。

eclipse search dialog with replace option

一旦配置您的搜索條件(如「擴展OldClass」)並搜索,你會看到一個對話框輸入一個替代值來呈現(例如「擴展的NewClass」)。按下該對話框的'確定'後,它將執行搜索和替換。

replace dialog

這也讓正則表達式,無論是在搜索和替換(我假設這將允許使用正則表達式組拍攝,但我沒有測試過)。應該可以將相同的原則應用於您也想要刪除的參數。

請注意,如果您只想修改出現extends OldClass, B b)的類並且它們可以獨立出現,那麼它會變得更復雜。

+0

是的,但我需要爲我想改變的一切做到這一點。我想批量搜索替換.. –

+0

除非我對'批'有不同的理解,這應該是可能的。我認爲你希望在一個動作中執行每個文件(這允許它在多個文件中搜索),如果你的意思是你想把它作爲一個單獨的任務來運行,那就自動地道歉。 – Grundlefleck

+0

我不會說英文,也許我的帖子不清楚:)在最壞的情況下,我會每次使用CTRL + H。謝謝! –

1

如果當前的代碼不是太複雜,你可以擺脫SED,例如,

find . -type f -iname '*.txt' -exec sed -i 's,this,that,g' {} + 
+0

我在Windows 7下。我將編輯我的帖子。 –

+0

@ Pier-alexandreBouchard在Windows下,您可以安裝Cygwin以訪問一些基於Linux的文件處理工具,包括find和sed。 –

+0

@ChristianSemrau我正在尋找一個插件或一個小工具,因爲我無法在我的作業的計算機上安裝任何軟件 –