簡體   English   中英

為空時獲取空字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM