Java字串拆分

2019-10-16 22:23:43

Java String split()方法用於根據提供的正規表示式將字串拆分為字串陣列。

Java字串拆分

有時需要在Java中拆分String,例如:拆分CSV檔案的資料以獲取所有不同的值。

String類提供了兩種拆分字串的方法。

1. public String[] split(String regex)方法

此方法用於根據給定的正規表示式字串拆分字串。整個字串被拆分並以字串陣列的形式返回。此方法是在Java 1.4中引入的。請注意,尾隨的空字串不包含在返回的字串陣列中。下面來看一個簡單的java字串拆分範例 -

String s = "abcaada";
System.out.println(Arrays.toString(s.split("a")));

上面的程式碼將產生輸出為:[,bc,,d]。請注意,最後一個空字串將從返回的字串陣列中排除。

2. public String[] split(String regex, int limit)方法
當要將字串拆分為有限數量的字串時,可使用此java字串拆分方法。例如,假設有一個String變數,它包含逗號作為分隔符的名稱和地址。地址中可以包含逗號。下面給出了這個字串拆分的範例。

String s = "Haikou,Hainan,China";
String[] data = s.split(",", 2);
System.out.println("Name = "+data[0]); //Haikou
System.out.println("Address = "+data[1]); //Hainan,China

請注意,上面的第一種方法實際上通過limit引數使用0傳遞來使用第二種方法。

public String[] split(String regex) {
    return split(regex, 0);
}

Java的字串分割要點

關於java String split()方法的一些要點是:

  • 此方法返回的陣列包含此字串的每個子字串,該子字串由與給定表示式匹配的另一個子字串終止,或者由字串的結尾終止。陣列中的子串按它們在此字串中出現的順序排列。
  • 如果正規表示式與輸入字串的任何部分都不匹配,那麼結果陣列只有一個元素,即該字串。
  • limit引數控制模式的應用次數,因此會影響結果陣列的長度。如果限制n大於零,那麼模式將最多應用n-1次,陣列的長度將不大於n,並且陣列的最後一個條目將包含超出最後一個匹配分隔符的所有輸入。
  • 如果n是非正數,那麼模式將被應用盡可能多的次數,並且陣列可以具有任何長度。
  • 如果n為零,那麼模式將被應用盡可能多的次數,陣列可以具有任何長度,並且將丟棄尾隨的空字串。

Java String拆分範例
以下是java String split()方法的範例。

import java.util.Arrays;

public class JavaStringSplit {

    /**
     * Java String split example
     * 
     * @param args
     */
    public static void main(String[] args) {
        String line = "Copyright of tw511.com at 2099";

        String[] words = line.split(" ");

        String[] twoWords = line.split(" ", 2);

        System.out.println("String split with delimiter: " + Arrays.toString(words));

        System.out.println("String split into two: " + Arrays.toString(twoWords));

        // 用特殊字元分隔的拆分字串
        String wordsWithNumbers = "I|am|a|java|developer";

        String[] numbers = wordsWithNumbers.split("\\|");

        System.out.println("String split with special character: " + Arrays.toString(numbers));

    }
}

執行上面範例程式碼,得到以下結果 -

String split with delimiter: [Copyright, of, tw511.com, at, 2099]
String split into two: [Copyright, of tw511.com at 2099]
String split with special character: [I, am, a, java, developer]

可以使用反斜杠將java正規表示式特殊字元用作普通字元,就像上面的程式中使用了管道(|)特殊字元一樣。