From Gossip@caterpillar

Java Gossip: 分離字串

將字串依所設定的條件予以分離是很常見的操作,例如指令的分離,文字檔案的資料讀出等等,以後者而言,當您在文字檔案中儲存以下的資料時,在讀入檔案後,將可以使用String的split()來協助每一格的資料分離。

假設在文字檔案中有如下的內容,每筆資料中是以tab分開:
cater        64/5/26    093900230    25433343
momor    67/3/26    0939123456    5434233

下面這個程式是一個簡單的範例,假設String物件的資料就是檔案中的一行文字資料:

  • StringSplit.java
public class StringSplit { 
public static void main(String args[]) {
String strOfReaded1 =
"cater 64/5/26 0939002302 5433343";
String[] tokens = strOfReaded1.split("\t");

for(String token : tokens) {
System.out.print(token + "\t");
}
System.out.println();
}
}

執行結果:
cater    64/5/26    0939002302    5433343

split()依您所設定的分隔設定,將字串分為數個子字串並以String陣列傳回,再來看一個例子,假設您的文字檔案內容每筆資料是以','分隔:
cater,64/5/26,0939002302,5433343
momor,67/3/26,0939123456,5434233

 
  • StringSplit.java
public class StringSplit { 
public static void main(String args[]) {
String strOfReaded2 =
"cater,64/5/26,0939002302,5433343";
tokens = strOfReaded2.split(",");
for(String token : tokens) {
System.out.print(token + "\t");
}
System.out.println();
}
}

執行結果:
cater    64/5/26    0939002302    5433343

這邊簡單的介紹了一下split()方法的使用,有人可能會想到 java.util.StringTokenizer,基本上API中明確的表示它已經是遺產類別(Legacy class)了,存在的原因是為了舊程式的相容性,不建議在您撰寫新程式時使用,使用split()來代替會是個好的方案,而且您還可以進一步 使用正則表示式 來進行字串分離。