【问题标题】:Convert null string to "" [duplicate]将空字符串转换为“” [重复]
【发布时间】:2015-04-09 03:21:54
【问题描述】:

如果我有

String a = null;
System.out.println(a);

我会得到

null

有没有一种优雅的方法来改变这个空字符串?

我能做到:

if (a == null){
a="";
}

上下文是我将生成一个形式的字符串:

String myString = a + "\n" + b + "\n" + c;

但我想知道是否有更好的解决方案。

【问题讨论】:

  • 你能不能只说String a = "" ? String 会将其指针放在 null 处,然后指向一个空字符串。

标签: java null


【解决方案1】:

我会分解出一个捕捉意图的实用方法,它可以提高可读性并允许轻松重用:

public static String blankIfNull(String s) {
    return s == null ? "" : s;
}

然后在需要时使用它:

System.out.println(blankIfNull(a));

【讨论】:

【解决方案2】:

您可以使用ternary operator 进行这样的尝试。

System.out.println(a == null ? "" : a);

或者,您可以按照 chrylis 的建议使用 Commons Lang3 函数 defaultString()

System.out.println(StringUtils.defaultString(a));

【讨论】:

    【解决方案3】:

    Apache commons lang3 有一个函数可以做到这一点。

    import org.apache.commons.lang3.StringUtils;
    
    a = null;
    System.out.println(StringUtils.defaultString(a));
    

    【讨论】:

      【解决方案4】:

      你可以写一个可变参数方法

      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);
      

      【讨论】:

        猜你喜欢
        • 2014-05-25
        • 1970-01-01
        • 2019-10-27
        • 2016-09-06
        • 1970-01-01
        • 2014-07-31
        相关资源
        最近更新 更多