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教程。