如何将字符串列表格式化为

新手上路,请多包涵

我有一个字符串列表,我想以相同的方式对每个字符串进行格式化。例如 myListOfStrings = str1, str2, str3,我的格式是 (%s) 我想要这样的东西:

 String.format(" (%s) ", myListOfStrings)

会输出

(str1)  (str2)  (str3)

有没有一种优雅的方式来做到这一点?还是我必须使用字符串生成器并对所有字符串执行 foreach 循环?

原文由 user844541 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 507
2 个回答

你可以用 Java 8 做到这一点:

 import static java.util.stream.Collectors.joining;

public static void main(String[] args) throws Exception {

    final List<String> strings = Arrays.asList("a", "b", "c");

    final String joined = strings.stream()
            .collect(joining(") (", "(", ")"));

    System.out.println(joined);
}

或者:

 final String joined = strings.stream()
        .map(item -> "(" + item + ")")
        .collect(joining(" "));

你喜欢哪一个是个人喜好的问题。

第一个加入 ) ( 上的项目,给出:

一)(二)(三)

然后使用前缀和后缀参数 joining 前缀和 ( 和后缀 ) 产生正确的结果。

第二种选择将每个项目转换为 ( + item + ) 然后将它们加入“”。

第一个也可能更快一些,因为它只需要为连接和前缀/后缀创建 一个 StringBuilder 实例。第二种选择需要创建 n + 1 StringBuilder 实例,一个用于每个元素,一个用于连接“”。

原文由 Boris the Spider 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您想要一个单行解决方案,您可以使用 Apache Commons Lang 中的 StringUtils.join 方法之一。

 String result = "(" + StringUtils.join(myListOfStrings, ") (") + ")";

原文由 Sharon Ben Asher 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题