2014-02-21 39 views
7

我想我的領域的字符串值(也可以是長字符串或任何類型的對象),獲取空字符串當空

如果字段爲空比它應該返回空字符串,我這樣做有番石榴;

nullToEmpty(String.valueOf(gearBox)) 
nullToEmpty(String.valueOf(id)) 
... 

但是,如果變速箱爲空,則返回空值!不是空字符串,因爲valueOf方法會返回導致錯誤的字符串「null」。

任何想法?

編輯:有數百個領域我尋找一些容易實現

回答

3

使用內嵌空檢查

gearBox == null ? "" : String.valueOf(gearBox); 
+0

兩秒鐘太快了! – Rainbolt

+0

@Samhain有100個字段我尋找易於實施的東西 – Spring

42

您可以使用Objects.toString()(標準的Java 7):

Objects.toString(gearBox, "") 

Objects.toString(id, "") 

來自鏈接文檔:

public static String toString(Object o, String nullDefault)

返回的第一個參數調用toString如果第一個參數不爲空,否則返回第二個參數的結果。

參數:
o - 對象
nullDefault - 字符串返回,如果第一個參數是null

返回:
第一個參數調用toString的結果,如果它是不null,否則就是第二個參數。

另請參見:
toString(Object)

+0

我使用java6 ...... – Spring

+0

@Spring你應該考慮升級,尤其是在Java 8即將推出的時候。無論如何,我會留下這個答案,以免它對未來的訪問者有所幫助。 – arshajii

+1

Downvoter:請發表評論。我想知道我的答案有什麼問題,只有一個downvote沒有告訴我。 – arshajii

6

如果你不介意使用Apache公地,他們有一個StringUtils.defaultString(String str)做這個。

返回傳入的字符串,或者如果字符串爲null,則返回空字符串(「」)。

如果你也想擺脫"null",你可以這樣做:

StringUtils.defaultString(str).replaceAll("^null$", "") 

或忽略大小寫:

StringUtils.defaultString(str).replaceAll("^(?i)null$", "") 
+0

如果字符串是字符串「null」會怎樣?多數民衆贊成我的問題 – Spring

+0

@Spring:更新以照顧這種情況。 – Keppil

0

所有的解決方案,我會選擇已經公佈。因此,在這種特殊情況下,如果真的有那些必須改變,你可以考慮以某種方式不好和骯髒的解決方案陳述100S:

寫自己的String類的null返回""。使用自己的String實現,您不必更改現有代碼(可能會添加import)。但這真的是一個不好的解決方案...我只想提及它;-)

我個人會使用搜索和替換,並與除此之外的任何其他答案一起去。

+2

只是不提這樣的事情,如果它顯然是一個非常糟糕的建議... IMO這沒有任何好處 – BAER

5

由於您使用的番石榴:

Objects.firstNonNull(gearBox, "").toString(); 
+1

是你在你的個人資料圖片嗎?那不是喬恩嗎? – Kai

+0

這是正確的答案;) – whyem

+0

從番石榴18你需要使用'MoreObjects.firstNonNull' – jcrada

4

對於Java 8,您可以使用可選的方法:

Optional.ofNullable(gearBox).orElse(""); 
Optional.ofNullable(id).orElse("");