2015-09-30 111 views
1

我有這樣的代碼都在我的類:Eclipse的正則表達式搜索和替換交換位置

if (src.getTYPERECORD().getACT().equalsIgnoreCase("B")) 

現在,如果getter方法返回null它可能會崩潰,併爲球隊的最佳實踐,我被要求將其轉換成:

if ("B".equalsIgnoreCase(src.getTYPERECORD().getACT())) 

我想出了下面的正則表達式搜索的,我已經有了賦給變量像act.equalsIgnoreCase(「B」)的值的情況下,更容易:

(\w*).equalsIgnoreCase\("(\w*)"\) 

替換爲:

"\2".equalsIgnoreCase(\1) 

除了上述案件作品,這樣的:

tos.substring(1,1).equalsIgnoreCase("A") 

能否請您幫忙拿出搜索和替換正則表達式來趕提到的兩個例子以上? 這將需要考慮的情況下開IF支架相鄰,哪裏還有空間一樣,如果(SRC ....或者(SRC ....

謝謝!

+0

'「something」.equals(something)'可能隱藏錯誤。我討厭這種方法,我寧願單獨處理'null'。 – Maroun

+0

嵌套的可能性表明這個任務不應該與正則表達式,但可能與解析器。 – Pshemo

+0

@Pshemo - 你的解析器是什麼意思?你能否介紹一個合適的?或者你如何建議我這樣做? – Carmageddon

回答

1

只是改變像這應該工作:

\b([\S]*?).equalsIgnoreCase\("(\w*)"\) 

的例子here at rubular看看

+0

它沒有正確匹配,試試你的建議:http:// rubular。com/r/PZqKDdRi17 (例子中不包含一個子字符串的情況下我才發現) – Carmageddon

+0

@Carmageddon看看更新後的答案,並感謝將我指向rubular(這是夢幻般的在線工具)! – aleroot

+0

非常感謝!這很有效,除了這種情況:tos.substring(3,3).equalsIgnoreCase(「R」),但我會照顧它手動,罕見。很高興聽到你發現這個東西有用:) – Carmageddon

0

的Java 8的Optional救援

如果鏈條上有任何內容爲空,包括src本身,則會觸發orElse(),並且測試將是錯誤的。否則,測試按預期工作。

+0

我很欣賞希望提供幫助並給出了所提問題的替代建議,但是有原因..該項目在Java 1.6上運行,我不能改變這一點,我不能讓他們改變標準 - 我清楚地表明瞭這一點,並且我需要替換我自己的表達式......所以請給出解決方案,不要提出我不能使用的解決方案。 – Carmageddon

+0

@Carmageddon好的。但你有我的同情心。 Java 1.6即將誕生10週年。這是*真的*後緣... – Bohemian

0

這做工作:

Search: if\s*\(\s*(src.*)\.equalsIgnoreCase\((.*?)\) 
Replace: if (\2.equalsIgnoreCase(\1) 

測試在Eclipse中。

相關問題