![](/img/trans.png)
[英]Check if a String is null or empty when it's null sometimes and sometimes not
[英]Get empty string when null
我想獲取我的字段的字符串值(它們可以是長字符串或任何對象的類型),
如果一個字段為空,那么它應該返回空字符串,我用番石榴做到了這一點;
nullToEmpty(String.valueOf(gearBox))
nullToEmpty(String.valueOf(id))
...
但是如果變速箱為空,這將返回空值! 不是空字符串,因為 valueOf 方法返回導致錯誤的字符串“null”。
有任何想法嗎?
編輯:有 100 個字段,我在尋找易於實現的東西
您可以使用Objects.toString()
(Java 7 中的標准):
Objects.toString(gearBox, "")
Objects.toString(id, "")
從鏈接的文檔:
public static String toString(Object o, String nullDefault)
如果第一個參數不為空,則返回對第一個參數調用
toString
的結果,否則返回第二個參數。參數:
o
- 一個對象
nullDefault
- 如果第一個參數為null
返回的字符串返回:
如果第一個參數不為null
,則調用toString
的結果,否則為第二個參數。也可以看看:
toString(Object)
對於 java 8,您可以使用 Optional 方法:
Optional.ofNullable(gearBox).orElse("");
Optional.ofNullable(id).orElse("");
如果您不介意使用 Apache 公共資源,他們有一個StringUtils.defaultString(String str)
可以做到這一點。
返回傳入的字符串,或者如果字符串為空,則返回一個空字符串 ("")。
如果你還想擺脫"null"
,你可以這樣做:
StringUtils.defaultString(str).replaceAll("^null$", "")
或忽略大小寫:
StringUtils.defaultString(str).replaceAll("^(?i)null$", "")
如果替代方式, Guava提供Strings.nullToEmpty(String)
。
源代碼
String str = null;
str = Strings.nullToEmpty(str);
System.out.println("String length : " + str.length());
結果
0
使用內聯空檢查
gearBox == null ? "" : String.valueOf(gearBox);
由於您使用的是番石榴:
Objects.firstNonNull(gearBox, "").toString();
StringUtils.defaultString(String str)
返回傳入的字符串,或者如果字符串為空,則返回空字符串 ("")。
來自 java 文檔的示例
StringUtils.defaultString(null)
將返回""
StringUtils.defaultString("")
將返回""
StringUtils.defaultString("bat")
將返回"bat"
所有版本的最佳解決方案就是這個明顯的例子:
實施方法
// object to Object string
public static Object str(Object value) {
if (value == null) {
value = new String();
}
return value;
}
// Object to String
public static String str(Object value) {
if (value == null) {
value = new String();
}
return value.toString();
}
// String to String (without nulls)
public String str(String value) {
if (value == null) {
value = new String();
}
return value;
}
使用:
str(yourString);
在 Java 9+ 中使用: Objects.requireNonNullElse (obj, defaultObj) https://docs.oracle.com/javase/9/docs/api/java/util/Objects.html#requireNonNullElse-TT-
//-- returns empty string if obj is null
Objects.requireNonNullElse (obj, "")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.