1. 简介
打印数组时,Java默认会输出带方括号和逗号的格式(如 [a, b, c]
)。本文将介绍多种方法去除这些符号,包括:
- ✅ 核心Java工具类
- ✅ Apache Commons Lang
- ✅ Guava库
所有方法都支持自定义分隔符,我们统一用这个示例数组:
String[] content = new String[] { "www.", "Baeldung.", "com" };
2. 使用 StringBuilder
StringBuilder
是最基础的方式,通过遍历数组拼接元素:
@Test
public void givenArray_whenUsingStringBuilder_thenPrintedArrayWithoutCommaBrackets() {
StringBuilder builder = new StringBuilder();
for (String element: content) {
builder.append(element);
}
assertEquals("www.Baeldung.com", builder.toString());
}
优点:
- 简单直接
- 可灵活添加自定义分隔符(如
builder.append("-")
)
3. 字符串操作法
3.1 replace() 方法
先用 Arrays.toString()
生成默认格式字符串,再用 replace()
逐个移除符号:
@Test
public void givenArray_whenUsingStringReplace_thenPrintedArrayWithoutCommaBrackets() {
String result = Arrays.toString(content)
.replace("[", "")
.replace("]", "")
.replace(", ", "");
assertEquals("www.Baeldung.com", result);
}
⚠️ 踩坑点:注意 replace(", ", "")
中的空格不能漏,否则可能残留空格。
3.2 replaceAll() 方法
通过正则表达式一次性替换所有符号:
@Test
public void givenArray_whenUsingStringReplaceAll_thenPrintedArrayWithoutCommaBrackets() {
String result = Arrays.toString(content)
.replaceAll("\\[|\\]|, ", "");
assertEquals("www.Baeldung.com", result);
}
正则解析:
\\[
匹配左方括号|
表示或\\]
匹配右方括号,
匹配逗号+空格
4. 使用 String.join()
Java 8+ 的 String.join()
是最简洁的方案:
@Test
public void givenArray_whenUsingStringJoin_thenPrintedArrayWithoutCommaBrackets() {
String result = String.join("", content);
assertEquals("www.Baeldung.com", result);
}
核心逻辑:用空字符串 ""
作为分隔符连接数组元素。
5. Java Streams API
利用 Java 8 的 Stream API 和 Collectors.joining()
:
@Test
public void givenArray_whenUsingStream_thenPrintedArrayWithoutCommaBrackets() {
String result = Stream.of(content).collect(Collectors.joining(""));
assertEquals("www.Baeldung.com", result);
}
流程:
Stream.of(content)
创建数组流Collectors.joining("")
指定空分隔符收集
6. Apache Commons Lang
使用 StringUtils.join()
需添加依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
代码实现:
@Test
public void givenArray_whenUsingStringUtilsJoin_thenPrintedArrayWithoutCommaBrackets() {
String result = StringUtils.join(content, "");
assertEquals("www.Baeldung.com", result);
}
优势:处理 null
元素更安全(默认跳过)
7. Guava Joiner
添加 Guava 依赖:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
使用 Joiner
工具类:
@Test
public void givenArray_whenUsingJoinerJoin_thenPrintedArrayWithoutCommaBrackets() {
String result = Joiner.on("").join(content);
assertEquals("www.Baeldung.com", result);
}
特色功能:可配置 null
处理策略(如 Joiner.on("").skipNulls()
)
8. 总结
方法 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
StringBuilder | 简单场景 | 无依赖 | 需手动处理循环 |
String 操作 | 快速原型 | 无需新API | 正则可能影响性能 |
String.join() | Java 8+ | 最简洁 | 不支持自定义null处理 |
Streams API | 复杂处理 | 可链式操作 | 性能略低于原生方法 |
Apache Commons | 企业项目 | null安全 | 需引入依赖 |
Guava Joiner | 高级需求 | 灵活配置 | 依赖较重 |
推荐选择:
- ✅ 简单需求:
String.join("")
- ✅ 复杂处理:
Streams API
- ✅ 企业项目:
Apache Commons
或Guava
所有示例代码已上传至 GitHub。