如果我有
String a = null;
System.out.println(a);
我会得到
null
有没有一种优雅的方法来改变这个空字符串?
我能做到:
if (a == null){
a="";
}
上下文是我将生成一个形式的字符串:
String myString = a + "\n" + b + "\n" + c;
但我想知道是否有更好的解决方案。
答案 0 :(得分:11)
您可以使用ternary operator尝试这样做。
System.out.println(a == null ? "" : a);
Alernatively,你可以使用chrylis建议的Commons Lang3函数defaultString()
,
System.out.println(StringUtils.defaultString(a));
答案 1 :(得分:5)
我会想出一个捕获意图的实用工具方法,它提高了可读性并允许轻松重用:
public static String blankIfNull(String s) {
return s == null ? "" : s;
}
然后在需要时使用它:
System.out.println(blankIfNull(a));
答案 2 :(得分:2)
你可以写一个varargs方法
public static String concat(String... arr) {
StringBuilder sb = new StringBuilder();
for (String s : arr)
if (s != null)
sb.append(s);
return sb.toString();
}
然后你可以做
String myString = concat(a, "\n", b, "\n", c);
答案 3 :(得分:2)
Apache commons lang3有一个可以执行此操作的功能。
import org.apache.commons.lang3.StringUtils;
a = null;
System.out.println(StringUtils.defaultString(a));