ZetCode

Java 分割字符串

上次修改时间:2024 年 2 月 20 日

Java 分割字符串教程展示了如何在 Java 中分割字符串。 我们使用 StringsplitPatternsplitAsStream 和 Guava 的 Splitteron 方法。

String 类有一个内置方法用于分割字符串。

该方法返回一个分割后的字符串数组。

除了 split 方法,Pattern 类也有 splitAsStream 方法。

分割电话号码

在第一个例子中,我们分割一个电话号码。

Main.java
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

Main.java
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 选项控制分割子字符串的数量。

Main.java
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

分割和修剪字符串

我们经常需要删除字符串周围的空格字符。

Main.java
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 分割字符串。

Main.java
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);
}

该示例使用 PatternsplitAsStream 方法分割电话号码。

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 的依赖项。

SplitStringGuavaEx.java
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 中分割字符串。

作者

我的名字是 Jan Bodnar,我是一位热情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我已经撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出所有Java教程