检查 null 并在 Java 中将两个字符串与分隔符组合在一起,否则返回 1[Java -7]



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

我们是否有任何内置的测试方法或比下面更好的方法?

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 : "";
}
a = "abc" and b = "efg"
OUTPUT: "abc-efg"
a = null and b = "abc"
OUTPUT: "abc";

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

private String getValue2(String... values) {
return Stream.of(values)
.filter(Objects::nonNull)
.collect(Collectors.joining("-"));
}

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

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

在这种情况下,您可以使用可选。 将字符串从参数替换为可选也很好,在这种情况下,该方法可以简化。

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("");
}

我会尝试以更高的可读性重写它,如下所示:

private String getValue(@Nonnull String mandatoryStr, Optional<String> optionalStr) {
if (optionalStr.isPresent()) {
mandatoryStr += "-" + optionalStr;
}
return mandatoryStr;
}

当然,您必须导入这些导入:

import javax.annotation.Nonnull;
import java.util.Optional;

相关内容

最新更新