如何在 Java 中分割一个字符串

Hassan Saeed 2021年12月25日 2020年9月19日
如何在 Java 中分割一个字符串

本教程讨论如何在 Java 中拆分/分割一个字符串。

Java 中的 String 是非原始数据类型之一,用于存储一个字符序列。我们可以简单地声明一个字符串变量,如下所示。

String string = "I am a string";
String string1 = "I am another string";

我们可能需要执行几个字符串处理任务,这取决于我们要实现的目标。让我们考虑一下这样的情况:我们有一个以 CSV 格式表示数据的字符串-全部用逗号分隔。

String data = "Apple,Banana,Orange,Peach"; 

我们希望从中得到所有的独立字符串;因此我们需要根据逗号对字符串进行拆分,以分离数据,得到如下的输出。

> Apple
> Banana
> Orange
> Peach

Java 字符串默认情况下有一个拆分函数 String#split(),它接收一个正则表达式作为输入,并在给定的输入上拆分后返回一个结果字符串数组。

下面的例子说明了如何在 Java 中使用这个方法来拆分给定的字符串。

public class Main {
    public static void main(String args[]) {
        String data = "Apple,Banana,Orange,Peach";
        String[] splitted = data.split(",");
        for (int i=0; i<splitted.length; i++){
            System.out.println(splitted[i]);
        }
    }
}

上面的代码输出如下。

Apple
Banana
Orange
Peach

让我们尝试用这个方法在不同的参数上拆分一个字符串。

. 作为分隔符

这次我们有一个这样的字符串 - "One.Two.Three.Four"。让我们再次使用同样的方法来拆分它。

public class Main {
    public static void main(String args[]) {
        String data = "One.Two.Three.Four";
        String[] splitted = data.split(".");
        for (int i=0; i<splitted.length; i++){
            System.out.println(splitted[i]);
        }
    }
}

上面的代码将什么也不输出! 请记住,我们提到过,split 函数需要一个正则表达模式作为输入。因此,当我们要对一些特殊字符进行拆分时,我们需要采取额外的措施。

这里有 12 个具有特殊含义的字符。

  • 反斜杠 \
  • 小括号 ^
  • 美元符号 $
  • 句点 .
  • 竖线或管道符号 |
  • 问号 ?
  • 星号 *
  • 加号 +
  • 左括号 (
  • 右括号 )
  • 左方括号 [
  • 左大括号 {

这些特殊字符通常被称为元字符。

如果我们要对上述任何一个字符进行拆分,我们可以使用反斜杠 / 来转义这些特殊字符,所以使用 data.split('\\.') 来代替 data.split('.')

public class Main {
    public static void main(String args[]) {
        String data = "One.Two.Three.Four";
        String[] splitted = data.split("\\.");
        for (int i=0; i<splitted.length; i++){
            System.out.println(splitted[i]);
        }
    }
}

现在上面的代码就能正确输出了。

One
Two
Three
Four

让我们再试一个例子。

以一个字符串作为分隔符来拆分

这次我们有一个这样的字符串。"OneFruitTwoFruitThreeFruit". 我们再用同样的方法,根据字符串 Fruit 进行拆分。

public class Main {
    public static void main(String args[]) {
        String data = "OneFruitTwoFruitThreeFruit";
        String[] splitted = data.split("Fruit");
        for (int i=0; i<splitted.length; i++){
            System.out.println(splitted[i]);
        }
    }
}

上面的代码输出。

One
Two
Three

现在我们知道了如何在 Java 中对任意给定的参数进行拆分。

相关文章 - Java String