将空字符串转换为“”
Convert null string to ""
如果我有
String a = null;
System.out.println(a);
我会得到
null
有没有一种优雅的方法可以将其更改为空字符串?
我能做到:
if (a == null){
a="";
}
上下文是我将生成以下形式的字符串:
String myString = a + "\n" + b + "\n" + c;
但我想知道是否有更好的解决方案。
您可以使用 ternary operator.
像这样尝试
System.out.println(a == null ? "" : a);
或者,您可以按照 chrylis 的建议使用 Commons Lang3 函数 defaultString()
,
System.out.println(StringUtils.defaultString(a));
我会找出一个实用方法来捕捉意图,提高可读性并允许轻松重用:
public static String blankIfNull(String s) {
return s == null ? "" : s;
}
然后在需要时使用它:
System.out.println(blankIfNull(a));
你可以写一个可变参数方法
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);
Apache commons lang3 有一个函数可以做到这一点。
import org.apache.commons.lang3.StringUtils;
a = null;
System.out.println(StringUtils.defaultString(a));
如果我有
String a = null;
System.out.println(a);
我会得到
null
有没有一种优雅的方法可以将其更改为空字符串?
我能做到:
if (a == null){
a="";
}
上下文是我将生成以下形式的字符串:
String myString = a + "\n" + b + "\n" + c;
但我想知道是否有更好的解决方案。
您可以使用 ternary operator.
像这样尝试System.out.println(a == null ? "" : a);
或者,您可以按照 chrylis 的建议使用 Commons Lang3 函数 defaultString()
,
System.out.println(StringUtils.defaultString(a));
我会找出一个实用方法来捕捉意图,提高可读性并允许轻松重用:
public static String blankIfNull(String s) {
return s == null ? "" : s;
}
然后在需要时使用它:
System.out.println(blankIfNull(a));
你可以写一个可变参数方法
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);
Apache commons lang3 有一个函数可以做到这一点。
import org.apache.commons.lang3.StringUtils;
a = null;
System.out.println(StringUtils.defaultString(a));