本文将学习将字符串分割为数组。拆分字符串是一项非常常见的任务,尤其是在 Web 应用程序中,当我们必须以 CSV 格式传递数据或基于其他分隔符(例如 或另一个分隔符)进行分隔$#

1. 使用纯Java

String.split()方法是分割字符串的最佳且推荐的方法。令牌以字符串数组的形式返回,这样我们就可以按照自己的意愿使用它。

以下 Java 程序使用分隔符逗号分割字符串。相当于分割一个CSV文件。

// 使用 split() 示例 String blogName = "how,to,do,in,java"; String[] tokenArray = blogName.split(","); //["how", "to", "do", "in", "java"] 

我们需要修改正则表达式以满足任何其他要求。为了忽略逗号周围的空格,我们可以使用模式“\s,\s”。

String[] tokenArray = blogName.split("\s*,\s*"); 

2. 使用分离器

String.split ()是非常简单的 API,适用于简单的用法。如果我们想在分割后但得出最终结果之前处理令牌,那么Splitte类是最好的。

  • 使用Splitter还可以使代码更具可读性和可重用性。我们创建一个Splitter实例并多次复用它,从而有助于实现整个应用程序的统一逻辑拆分。
  • 另一个好处是,它在构建分离器本身时还提供了一些有用的方法,消除了创建代币后的大量后续工作。

我们可以直接从maven存储库中包含Guava 。

<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>17.0</version> </dependency> 

我们可以以流畅的方式创建一个Splitter实例:

Splitter niceCommaSplitter = Splitter.on(',').omitEmptyStrings().trimResults(); 

现在,可以根据需要在代码中的任何位置使用它。请注意,我们有两次逗号。Splitter 处理得很好并且不包含空令牌。

//Splitter 示例 Splitter niceCommaSplitter = Splitter.on(',').omitEmptyStrings().trimResults(); Iterable<String> tokensList = niceCommaSplitter.split("how,to,do,in, ,java"); tokensList.forEach(System.out::println); //"how", "to", "do", "in", "java" 

3.使用StringUtils.split()

Apache Commons Lang 的StringUtils类提供了许多有用的方法来对字符串执行常见操作,例如搜索、替换、反转或检查为空。所有操作都是null 安全的。

StringUtils .split()与上述方法非常相似,也返回String数组输出。唯一的好处是代码速度更快。

首先包含最新版本的common-lang3依赖项。

<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency> 

初始化StringUtils的构造函数采用以下参数:

//句法 split(String str, String separatorChars, int max) 
  • str – 要解析的字符串,可能为空。
  • separatorChars(可选)– 用作分隔符的字符。默认值为空格。
  • max (可选)– 数组中包含的最大元素数。零或负值意味着没有限制。

以下使用StringUtils 的Java 程序通过分隔符空格分割字符串。

//StringUtils 示例 String[] tokens = StringUtils.split("how to do in java"); Assertions.assertArrayEquals(new String[]{"how", "to", "do", "in", "java"}, tokens);