我将发送两个变量,如果要检查变量是否为null。如果它不是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";发布于 2019-09-03 12:22:52
您可以重构到以下结构,该结构也检查空字符串,并在找到合适的配置时逐渐返回。
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();
}发布于 2019-09-03 12:19:18
我选择接受任意数目的参数,但更改为只接受两个参数很容易,然后仍然可以使用Stream.of。
private String getValue2(String... values) {
return Stream.of(values)
.filter(Objects::nonNull)
.collect(Collectors.joining("-"));
}发布于 2019-09-03 12:27:48
对于这种情况,您可以使用可选的。另外,将字符串从参数替换为可选字符串也不错,在这种情况下,方法可以简化。
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("");
}https://stackoverflow.com/questions/57771536
复制相似问题