use*_*541 6 java list string-formatting
我有一个字符串列表,我想以相同的方式格式化每个字符串.例如myListOfStrings = str1,str2,str3,我的格式是(%s)我想要这样的东西:
String.format(" (%s) ", myListOfStrings)
Run Code Online (Sandbox Code Playgroud)
会输出
(str1) (str2) (str3)
Run Code Online (Sandbox Code Playgroud)
这样做有一种优雅的方式吗?或者我是否必须使用字符串生成器并对所有字符串执行foreach循环?
您可以使用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);
}
Run Code Online (Sandbox Code Playgroud)
要么:
final String joined = strings.stream()
.map(item -> "(" + item + ")")
.collect(joining(" "));
Run Code Online (Sandbox Code Playgroud)
你喜欢哪一个是个人偏好的问题.
第一个加入项目) (给出:
a)(b)(c
然后,您使用前缀和后缀参数joining与前缀(和后缀带),以产生正确的结果.
第二种方法是将每个项目转换为( + item + )"",然后将它们加入"".
第一个也可能有点快,因为它只需要创建一个 StringBuilder实例 - 连接和前缀/后缀.第二种方法需要创建n + 1个 StringBuilder实例,每个元素一个,另一个用于""连接.
如果您想要一个单行解决方案,您可以使用Apache Commons Lang 中的StringUtils.join方法之一。
String result = "(" + StringUtils.join(myListOfStrings, ") (") + ")";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15597 次 |
| 最近记录: |