Java 中分割字符串的4种不同方法
本文将学习将字符串分割为数组。拆分字符串是一项非常常见的任务,尤其是在 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);