2014-02-21 4 views
7

Я хочу, чтобы получить строковые значения моих полей (они могут быть тип длинной строки или любого объекта),Получить пустую строку при нулевой

, если поле равно нулю, чем она должна возвращать пустую строку, я сделал это с гуавы ;

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

Но это возвращает null, если коробка передач пуста! а не пустую строку, потому что valueOf methdod возвращает строку «null», что приводит к ошибкам.

Любые идеи?

РЕДАКТИРОВАТЬ: Есть 100s поля я смотрю на что-то легко реализовать

ответ

3

использовать встроенный нулевой чек

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

две секунды слишком быстро! – Rainbolt

+0

@Samhain есть поля 100s. Я ищу что-то легкое для внедрения. – 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: пожалуйста, оставьте комментарий. Я хотел бы знать, что не так с моим ответом, и только нисходящий голос не говорит мне. – arshajii

6

Если вы не возражаете против использования Apache Commons, они имеют StringUtils.defaultString(String str), что делает это.

Возвращает либо переданную в String, либо строку String, пустую строку ("").

Если вы хотите избавиться от "null", вы можете сделать:

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

или игнорировать случай:

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

что, если строка string "null"? thats моя проблема – Spring

+0

@Spring: Обновлено, чтобы позаботиться об этом случае тоже. – Keppil

0

Все решения, которые я выбрал бы уже размещены.Таким образом, в этом частном случае, если есть на самом деле 100s тех утверждений, которые должны быть изменены вы могли бы рассмотреть как-то плохое и грязное решение:

Написать свой собственный String класс, который возвращает "" для null. С вашей собственной реализацией String вам не нужно менять существующий код (возможно, добавить import). Но это действительно плохое решение ... Я просто хочу упомянуть об этом ;-)

Лично я бы использовал поиск и замену и пошел с любым другим ответом, чем это.

+2

Просто не упоминайте что-то подобное, если это явно плохой совет ... imo вообще ничего не делает – BAER

5

Поскольку вы используете гуавы:

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

Это вы в своем профиле? Разве это не Джон? – Kai

+0

это правильный ответ;) – whyem

+0

от guava 18 вам нужно использовать 'MoreObjects.firstNonNull' – jcrada

4

Для Java 8 вы можете использовать альтернативный подход:

Optional.ofNullable(gearBox).orElse(""); 
Optional.ofNullable(id).orElse(""); 
Смежные вопросы