Java StringJoiner
最后修改于 2025 年 5 月 31 日
本文探讨 Java 中的 StringJoiner
,这是一个用于高效构建分隔字符串的有用类。
StringJoiner 通过在元素之间插入分隔符来帮助格式化字符序列。 此外,它还允许使用可选的前缀和后缀进行自定义,使其成为结构化文本格式化的理想选择。
关于 StringJoiner
的一个重要细节是,它仅在元素之间插入分隔符,而不在序列末尾插入。 这意味着最后一个元素不会有多余的尾随分隔符,从而确保干净和正确的格式,而无需不必要的字符。
在内部,StringJoiner
被 String.join
方法利用,提供了一种简单有效的方式来连接字符串。
使用 StringJoiner
以下示例使用 StringJoiner
类连接数字。
void main() { var joined = new StringJoiner(","); joined.add("1"); joined.add("2"); joined.add("3"); joined.add("4"); joined.add("5"); System.out.println(joined); }
该示例连接五个数字并将最终字符串打印到控制台。
var joined = new StringJoiner(",");
创建 StringJoiner
类的新实例。 逗号字符用作分隔符。
joined.add("1"); joined.add("2"); joined.add("3"); joined.add("4"); joined.add("5");
使用 add
方法添加五个值。
System.out.println(join);
StringJoiner
被转换为字符串并打印到控制台。
$ java Main.java 1,2,3,4,5
String.join 方法
在第二个示例中,我们使用 String.join
方法连接字符串。
void main() { var joined = String.join("/", "2024", "7", "1"); System.out.println(joined); }
String.join
方法在内部使用 StringJoiner
。
var joined = String.join("/", "2024", "7", "1");
使用 String.join
方法连接日期。
$ java Main.java 2016/8/5
连接列表
第三个示例连接列表的元素。
void main() { var words = List.of("Today", "is", "a", "beautiful", "day"); var joined = String.join(" ", words); System.out.println(joined); }
可以将列表作为参数传递给 String.join
方法。
var joined = String.join(" ", words);
列表的元素用单个空格字符连接。
$ java Main.java Today is a beautiful day
读取 CSV 文件
以下示例从 CSV 文件中读取数字,然后使用 StringJoiner
连接它们。
13,24,35,16,50
这是 numbers.csv
文件。
void main() throws FileNotFoundException { var fileName = "data.csv"; StringJoiner joined; try (var scanner = new Scanner(new File(fileName))) { scanner.useDelimiter(","); joined = new StringJoiner("|"); while (scanner.hasNext()) { joined.add(scanner.next()); } } System.out.println(joined); }
该示例读取包含数字的 CSV 文件,并使用不同的分隔符通过 StringJoiner
连接它们。
try (var scanner = new Scanner(new File(fileName))) { scanner.useDelimiter(",");
这些值通过 Scanner
类读取。 数字由逗号字符分隔,因此我们使用 useDelimiter
方法设置逗号分隔符。
var joined = new StringJoiner("|");
使用 "|" 分隔符实例化 StringJoiner
类。
while (scanner.hasNext()) { join.add(scanner.next()); }
我们使用扫描仪检索值,并将它们与连接器连接起来。
写入 CSV 文件
下一个示例将数字写入 CSV 文件。
void main() throws IOException { var fileName = "data.csv"; var joined = new StringJoiner(","); joined.add("21"); joined.add("43"); joined.add("54"); joined.add("76"); joined.add("98"); var newFile = new File(fileName); boolean created = newFile.createNewFile(); if (created) { try (var pw = new PrintWriter(newFile)) { pw.write(joined.toString()); } } }
该示例使用 StringJoiner
连接五个数字,并将连接的字符串写入 CSV 文件。
var joined = new StringJoiner(","); joined.add("21"); joined.add("43"); joined.add("54"); joined.add("76"); joined.add("98");
使用 StringJoiner
连接五个数字。 数字用逗号字符分隔。
var newFile = new File(fileName); boolean created = newFile.createNewFile();
在当前工作目录中创建一个新的文件对象。
if (created) { try (var pw = new PrintWriter(newFile)) { pw.write(joined.toString()); } }
连接的值被写入文件。
Collectors.joining 方法
Collectors.joining
方法返回一个 Collector
,该 Collector
连接输入元素,并按遇到的顺序使用指定的分隔符分隔它们。
void main() { Stream<String> stream = Stream.of("Jan", "Peter", "Robert"); String names = stream.collect(Collectors.joining(" ")); System.out.println(names); }
该示例使用 stream API 连接三个名称。
$ java Main.java Jan Peter Robert
来源
在本文中,我们介绍了 StringJoiner
和 Collectors.joining
。
作者
列出所有Java教程。