2011-07-13 34 views
2

在一些別人寫的,人們已經使用null檢查條件爲null!=abcnull==abc這個Java代碼,但我需要分別將其更改爲abc!=nullabc==null搜索在Java代碼中一些字符串和替換它

有人告訴我,這可以很容易地使用正則表達式來完成,因爲直到現在我正在執行手動任務,但是搜索它然後手動替換它。

+3

出於好奇:你爲什麼要改變它? – Howard

+0

@haward:其中一位經理告訴我..即使我不知道爲什麼..只是我需要改變.. –

+0

你在做什麼編輯/環境/ ide - 這與你如何做正則表達式 – antlersoft

回答

3

我不知道所有這可能是在布爾表達式的右側的要求,但假設它是一個變量名,\w將是一個大致精確的搜索(見http://download.oracle.com/javase/tutorial/java/nutsandbolts/variables.html變量的完整規範名)。

搜尋字符串:

null\s*([!=]=)\s*(\w+) 

替換字符串

$1 $2 null 
+2

你應該用'\ s *'替換'\ s +'來匹配OP給出的例子。 – Howard

+0

@霍華德謝謝,我想那是我在想什麼,不知道我爲什麼要放'+'。 – Nicole

+0

@Renesis:我嘗試過上面的一個。首先替換字符串應該是'$ 2 $ 1 null',並且更多的只能在簡單條件下工作,而不適用於複雜條件。我也一樣閱讀,一旦我能夠找到某些東西,我會評論。 –

0

它不能使用正則表達式正確。

考慮

/* 
Print whether null==abc. 
*/ 
System.out.print("null==abc : " + (null==abc)); 

如果你想只改變代碼,第三null==abc以上,那麼你可以通過使用天真正則表達式得到的字符串和評論內容意外更改替換更改代碼。

而且你要小心不要改變

null==abc.def 

abc==null.def 

或改變

null==abc(def) 

abc==null(def) 

如果您對潛在的字符串和註釋更改感到滿意,並且要檢查更改以確保您沒有打破任何方法調用,那麼您可以在perl中始終執行此操作。

perl -i.bak -pe 's/null(\s*[!=]=\s*)([\w.]+)/$2$1null/g' YourJavaFile.java