Java 分割字符串
上次修改时间:2024 年 2 月 20 日
Java 分割字符串教程展示了如何在 Java 中分割字符串。 我们使用 String
的 split
、Pattern
的 splitAsStream
和 Guava 的 Splitter
的 on
方法。
String
类有一个内置方法用于分割字符串。
String[]
split(String regex)
- 根据给定正则表达式的匹配项分割字符串String[]
split(String regex, int limit)
- 根据给定正则表达式的匹配项分割此字符串
该方法返回一个分割后的字符串数组。
除了 split
方法,Pattern
类也有 splitAsStream
方法。
分割电话号码
在第一个例子中,我们分割一个电话号码。
import java.util.Arrays; void main() { String phoneNumber = "202-555-0154"; String[] output = phoneNumber.split("-"); Arrays.stream(output).forEach(part -> System.out.println(part)); }
电话号码通常用破折号 (-) 分隔。该程序使用 split
将电话号码分割成数值。
String phoneNumber = "202-555-0154";
这是电话号码。
String[] output = phoneNumber.split("-");
我们使用破折号字符分割字符串;split
方法返回从主字符串分割的子字符串数组。
Arrays.stream(output).forEach(part -> System.out.println(part));
我们将分割后的部分显示到控制台。
202 555 0154
使用点字符分割字符串
点字符在正则表达式语法中具有特殊含义。 要按点分割字符串,我们需要转义它或使用 Pattern.quote
。
import java.util.Arrays; import java.util.regex.Pattern; void main() { String address = "127.0.0.1"; // String[] output = address.split("\\."); String[] output = address.split(Pattern.quote(".")); Arrays.stream(output).forEach(part -> System.out.println(part)); }
该程序分割一个 IP 地址。
使用限制分割字符串
limit
选项控制分割子字符串的数量。
import java.util.Arrays; void main() { String names = "Jane-Paul-Ferenc-David-Robert-Julia"; String[] output = names.split("-", 4); Arrays.stream(output).forEach(System.out::println); }
该程序将 names
字符串分割成四个部分。
Jane Paul Ferenc David-Robert-Julia
分割和修剪字符串
我们经常需要删除字符串周围的空格字符。
import java.util.Arrays; void main() { String input = " wood, falcon\t, sky, forest\n"; String[] output = input.trim().split("\\s*,\\s*"); Arrays.stream(output).forEach(System.out::println); }
要删除空格,我们使用 trim
。
String output = input.trim().split("\\s*,\\s*");
正则表达式通过逗号字符分割输入字符串,逗号字符前后可能有任意数量的空格。
使用 Pattern 分割字符串
我们可以使用流以函数式的方式使用 Pattern
分割字符串。
import java.util.List; import java.util.regex.Pattern; import java.util.stream.Collectors; void main() { String phoneNumber = "202-555-0154"; List<String> output = Pattern.compile("-") .splitAsStream(phoneNumber) .collect(Collectors.toList()); output.forEach(System.out::println); }
该示例使用 Pattern
的 splitAsStream
方法分割电话号码。
List<String> output = Pattern.compile("-") .splitAsStream(phoneNumber) .collect(Collectors.toList());
我们编译一个包含用于分割的字符的正则表达式。 在编译后的表达式上,我们调用 splitAsStream
以获取分割后的子字符串流。 最后,我们将流收集到列表中。
使用 Guava 的 Splitter 分割字符串
以下示例使用 Google 的 Guava 库来分割字符串。它使用 Splitter
类。
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>27.0.1-jre</version> </dependency>
我们需要包含 Guava 的依赖项。
package com.zetcode; import com.google.common.base.Splitter; public class SplitStringGuavaEx { public static void main(String[] args) { var input = " falcon, \t\tforest\t, \t\t, moderate, sky\n"; var result = Splitter.on(',') .trimResults() .omitEmptyStrings() .splitToList(input); result.forEach(System.out::println); } }
该程序使用 Guava 的 Splitter
分割字符串。
var result = Splitter.on(',') .trimResults() .omitEmptyStrings() .splitToList(input);
我们使用 Splitter.on
从输入字符串中提取非重叠的子字符串。 trimResults
删除空格字符,omitEmptyStrings
删除潜在的空字符串。 结果被转换为列表。
来源
在本文中,我们展示了如何在 Java 中分割字符串。
作者
列出所有Java教程。