有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java可选/条件字符串concatation

我试图有条件地连接String。例如,在一个方法中,我有两个参数和一个局部String变量。如果我为这些参数提供值,那么这些值将被添加到本地String变量中

public Object concatinateString(String a, String b){

   String xyz = "firstValue";

   if((a == null || a == "") && (b != null || b != "")) {

        xyz = xyz.concat(".").concat(b);
   }

   if((b == null || b == "") && (a != null || a != "")) {

        xyz = xyz.concat(".").concat(a);
   }

   xyz = xyz.concat(".").concat(a).concat(".").concat(b);
} 

我的期望:

  concatinateString(null, b) --> xyz = firstValue.b;

  concatinateString("", b) --> xyz = firstValue.b

  concatinateString(a, null) --> xyz = firstValue.a

  concatinateString(a, "") --> xyz = firstValue.a

  concatinateString("", "") --> xyz = firstValue

  concatinateString(null, null) --> xyz = firstValue

  concatinateString(a, b) --> xyz = firstValue.a.b

我也尝试了以下代码,但没有得到预期的结果

public Object concatinateString(Optional<String> stageName, Optional<String> systemName) {
        Optional<String> property = Optional.of("firstValue");

        if ((!stageName.isPresent() || stageName.equals("")) && systemName.isPresent()) {

            property = Stream.of(property, systemName).flatMap(x -> x.map(Stream::of).orElse(null)).reduce((a, b) -> a + "." + b);

        }
        if (((!systemName.isPresent() || systemName.equals(""))) && stageName.isPresent()) {
            property = Stream.of(property, stageName).flatMap(x -> x.map(Stream::of).orElse(null)).reduce((a, b) -> a + "." + b);
        }
        property = Stream.of(property, stageName, systemName)
                .flatMap(x -> x.map(Stream::of).orElse(null))
                .reduce((a, b) -> a + "." + b);

        return property;

    }


 public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.concatinateString(Optional.ofNullable(null),Optional.ofNullable(null)));
}

我得到的结果:

  concatinateString(null, b) --> xyz = firstValue.b.b

  concatinateString("", b) --> xyz = firstValue..b

  concatinateString(a, null) --> xyz = firstValue.a.a

  concatinateString(a, "") --> xyz = firstValue.a.

  concatinateString("", "") --> xyz = firstValue..

  concatinateString(null, null) --> xyz = firstValue

  concatinateString(a, b) --> xyz = firstValue.a.b 

共 (0) 个答案