首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查Null并将两个字符串与Java中的分隔符合并,否则返回一个[Java-7]

检查Null并将两个字符串与Java中的分隔符合并,否则返回一个[Java-7]
EN

Stack Overflow用户
提问于 2019-09-03 12:13:06
回答 4查看 1.1K关注 0票数 2

我将发送两个变量,如果要检查变量是否为null。如果它不是null,那么将两个字符串与任何分隔符连接起来。否则只返回一个或空字符串。

我们有什么内在的方法来测试或者比下面更好的方法吗?

代码语言:javascript
复制
private String getValue(String valueOne, String valueTwo) {
    String value = null;
    if(valueOne != null) {
        value = valueOne;
    }
    if(value != null && valueTwo != null) {
        value += "-" + valueTwo;
    }else if(valueTwo != null) {
        value = valueTwo;
    }
    return value !=null ? value : "";
}
代码语言:javascript
复制
a = "abc" and b = "efg"
OUTPUT: "abc-efg"
代码语言:javascript
复制
a = null and b = "abc"
OUTPUT: "abc";
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-09-03 12:22:52

您可以重构到以下结构,该结构也检查空字符串,并在找到合适的配置时逐渐返回。

代码语言:javascript
复制
private String getValue(String valueOne, String valueTwo) 
{
      if(isNullOrEmpty(valueOne) && isNullOrEmpty(valueTwo))
      {
         return "";
      }
      else if (isNullOrEmpty(valueOne))
      {
        return valueTwo;
      }
      else if (isNullOrEmpty(valueTwo))
      {
       return valueOne;
      }

    return valueOne.concat("-").concat(valueTwo);    
}

 private boolean isNullOrEmpty(String str)
 {
    return str == null || str.isEmpty();
 }
票数 2
EN

Stack Overflow用户

发布于 2019-09-03 12:19:18

我选择接受任意数目的参数,但更改为只接受两个参数很容易,然后仍然可以使用Stream.of

代码语言:javascript
复制
private String getValue2(String... values) {
    return Stream.of(values)
            .filter(Objects::nonNull)
            .collect(Collectors.joining("-"));
}
票数 9
EN

Stack Overflow用户

发布于 2019-09-03 12:27:48

对于这种情况,您可以使用可选的。另外,将字符串从参数替换为可选字符串也不错,在这种情况下,方法可以简化。

代码语言:javascript
复制
private String getValue(String valueOne, String valueTwo) {
        Optional<String> valOne = Optional.ofNullable(valueOne);
        Optional<String> valTwo = Optional.ofNullable(valueTwo);
        return valOne.orElse("") +
                ((valOne.isPresent() && valTwo.isPresent()) ? "-" : "") +
                valTwo.orElse("");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57771536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档