2012年2月21日

Java:陣列與字串轉換,Array to String 和 String to Array


 
在 Java 中雖然有 ArrayList 等好用的 Collection 物件,
但因為陣列簡單易用,寫程式時還是常常會用到。


然而當我們在使用 Array 時,
有時會有需求是將 Array 中的物件內容列印出來,
這時我們就需要將 Array 轉換為字串,
雖然我們可以用 for 或 iterator 自己拼出字串,但其實還有更快的方法!

除了把陣列轉換為字串外,從另一方面來看,
我們也會有將 Array String 重新轉換成 Array 的需求。
以下的程式碼以簡單的 int array 為例,
說明 Array to String 和 String to Array 的轉換方式。
若使用的不是 int,則在程式中修改為所想要的 object type 即可。

以下為程式碼及說明:
 1 package werdna1222coldcodes.blogspot.com.demo.array;
 2 
 3 import java.text.ParseException;
 4 import java.util.Arrays;
 5 
 6 public class ArrayStringConvertDemo {
 7 
 8     public static void main(String[] args) throws ParseException {
 9 
10         // 建立有重複項目之 int array
11         int intArray[] = { 4, 2, 5, 1, 5, 2, 4, 3 };
12 
13         // 將 int array 轉換成 array string
14         String arrayString = intArrayToArrayString(intArray);
15 
16         // 將剛剛產生之 array string 再轉為 int array
17         arrayStringToIntArray(arrayString);
18     }
19 
20     static String intArrayToArrayString(int[] array) {
21 
22         // 利用 Arrays.toString 可以超簡單輸出 array
23         // 輸出結果:[4, 2, 5, 1, 5, 2, 4, 3]
24         String arrayString = Arrays.toString(array);
25         System.out.println(arrayString);
26         return arrayString;
27     }
28 
29     static void arrayStringToIntArray(String arrayString) {
30         
31         // 將剛剛輸出之 array string 先作去頭去尾處理
32         // 並用 split 來分開各個項目
33         String[] items = arrayString.replaceAll("\\[", "")
34                 .replaceAll("\\]", "").split(",");
35         
36         // items.length 是所有項目的個數
37         int[] results = new int[items.length];
38 
39         // 將結果放入 results,
40         // 並利用 Integer.parseInt 來將整數字串轉換為 int
41         for (int i = 0; i < items.length; i++) {
42             results[i] = Integer.parseInt(items[i].trim());
43         }
44 
45         // 此時已將字串轉換至 results 中,
46         // 但為了檢查,我們還是要把 results 印出來。
47         // 輸出結果:4, 2, 5, 1, 5, 2, 4, 3, 
48         for (int element : results) {
49             System.out.print(element + ", ");
50         }
51     }
52 }

除了用上面的程式碼轉換外,
用 Json 也可以達成類似的轉換方式,
這我會在後續再補上教學連結。

另外關於陣列,後面還有兩篇教學可以參考:
  1. Java:移除陣列Array中重複的值
  2. Java:針對Array中的值作排序
更多關於 Java 的教學及程式範例,請見:
Java 教學及程式範例大全

關鍵字:Java, array, string, 陣列, 字串, 轉換, 輸出, convert,
參考資料:


更多精選推薦文章