1. 程式人生 > 其它 >Java中的split函式

Java中的split函式

技術標籤:字串正則表示式java

Java中的split函式的用法

Java中的 split 函式是用於按指定字元(串)或正則去分割某個字串,結果以字串陣列形式返回;

例如:

String str="[email protected]";
String[] a = str.split("@");
System.out.println("處理結果: "+a[0]+","+a[1]);   //輸出的是: 處理結果: 1234,abc

對於分割的字元(串),通常是常見,普通的,沒什麼問題;

但是對某些特殊字元,如果字元(串)正好是正則的一部分,則需要轉義才能使用,

這些字元有 **| , + , * , ^ , $ , / , | , [ , ] , ( , ) , - , . , **等, 因它們是正則表示式中的一部分, 所以如果想用該字元本身, 這些字元需要進行轉義才能表示它本身;

例如:
想用 | 豎線去分割某字元,因 | 本身是正則表示式中的一部分,所以需要 \ 去轉義,因轉義使用 , 而這個 \ 正好也是正則表示式的字元,所以還得用一個 \ , 所以需要兩個 \。

String str="5678|XYZ";
String[] b = str.split("\\|");  //注意這裡用兩個 \\,而不是一個\
System.out.println("處理結果: "+b[0]+","+b[1]); //輸出的是: 處理結果: 5678,XYZ

再來看看:

String str="5678|XYZ";
String[] b = str.split("|");  //注意直接使用|,該字元是正則表示式的一部分,
String x="處理結果: ";
for(int i=0;i<b.length;i++){
	x=x+b[i]+",";
}
System.out.println(x);   //輸出的是: 處理結果: 5,6,7,8,|,X,Y,Z,

可能我們人為主觀感覺是用 | 來分割希望得到 5678 和 XYZ,因用特殊字元,實際結果是得到意外的結果;

今天下午就這個地方耗了幾個小時,頭暈才發現問題所在,555…
所以指定分割的字元(串)時,最好不要包含用於正則表示式本身的字元,如上面的紅色字元;