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);
}

流程

  1. Stream.of(content) 创建数组流
  2. 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 CommonsGuava

所有示例代码已上传至 GitHub


原始标题:Print an Array Without Brackets and Commas | Baeldung