Idea使用正則表達式批量替換字符串


由於一開始的粗放擴張,公司項目代碼里,遺留有很多類似魔法數的寫死的id,導致現在維護困難。於是交給我任務,將這些id替換成靜態變量。

這些id有十多種,分布在十個文件中,總共六十多處,要手動去查找替換幾乎是不可能的。

Idea中,菜單欄Edit->find->replace in path可以打開全文件查找功能,可以對項目的所有文件中的內容進行查找替換。

 

 

 

現在我們有這樣的代碼,其中的abcd是寫死的id:

String id="abcd".equals(str);

要替換成:

String id=ConstantService.getBy("abcd").equals(str);

如果只用普通的匹配,我會想到查找"String id=\"",替換成"String id=ConstantService.getBy(\""。

然而在項目中"String id=\""這樣格式的代碼是非常多的,普通的匹配很可能誤傷到其他代碼。

 

因此我使用正則匹配。點擊右邊的".*"圖標打開正則匹配模式。

 

 需要替換的代碼符合這樣的匹配模式:

String id=\"(\w+)\".equals\(str\);

可以替換成:

String id=ConstantService.getBy("$1").equals(str);

匹配模式中,寫死的id可以用\"(\w+)\"表示。最外側是轉義的引號。括號代表一個匹配組,其中的\w匹配字符,+號表示字符出現1或多次。這樣的模式符合項目中寫死的id。

替換串中$1代表匹配串中的第一個匹配組。因此,我們不用一次次的指定每個id,替換串自動將匹配的id替換到結果中。

 

這樣,這項本來令人難以想象的復雜工作就輕松解決了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM