组合字符串而不使用加号' +'

时间:2017-10-31 07:46:51

标签: java string java-8

我现在正在编写单元测试,我需要创建一个特定的字符串。

我现在定义了这样的内容:

private final String at = "@:";
private String error, effect, one, two, three, four;

在setUp(@Before)中:

    error = RandomStringUtils.randomAlphabetic (3);
    one = RandomStringUtils.randomAlphabetic (6);
    two = RandomStringUtils.randomAlphabetic (8);
    three = RandomStringUtils.randomAlphabetic (2);
    four = RandomStringUtils.randomAlphabetic (6);
    effect = (error + at + one + at + two + at + three + at + four);

弦乐与弦乐的结合看起来非常难看和业余。有可能以某种方式更有效地使用其他任何东西吗?比如模式?我不知道。感谢您的帮助:)

3 个答案:

答案 0 :(得分:10)

为简单起见,您还可以:

String.join(at, error,one, two, three, four);

答案 1 :(得分:7)

您可以使用java内置StringBuilder

StringBuilder sb = new StringBuilder();
sb.append(error);
sb.append(at);
sb.append(one);
...
effect = sb.toString();

答案 2 :(得分:5)

如果" @:"是一个一致的分​​隔符,并且您使用的是Java 8+,您可能会发现String.join是您的朋友。这看起来像是:

effect = String.join("@:", error, one, two, three, four);

从您的变量名称中稍微猜一下,但作为一个小背景,以防它有用,如果您想/需要使用Stream,您还可以使用Collectors.joining,这可能看起来类似的东西:

List<String> stringParts = ...
stringParts.stream()
  .collect(Collectors.joining("@:"));

这将加入列表中的所有内容&#34; @:&#34;作为分隔符。您还可以添加可能与error变量相关的常量前缀和/或后缀,例如:

String error = RandomStringUtils.randomAlphabetic(3);
List<String> stringParts = ...
stringParts.stream()
  .collect(Collectors.joining("@:", error, ""));