2011年7月19日 星期二

Android 字串分割和合併

最近搞一個監控狀態的小程式,利用 Android 呼叫特定的網頁,取得資訊呈現在手機上。人總是懶惰的,不想老是要慢慢地輸入主機 IP ,所以就想把它記錄在程式設定中,每次啟動程式先去抓預設值。

因為只是一個很簡單的程式,所以不想為了它去深入研究 SQLite ,所以後來同事選擇使用 SharedPreferences 來記錄程式設定,但是要被監控的主機不只一台,但是能記錄的資料卻沒有陣列可以使用,所以討論後決定使用字串切割的方式來儲存資料。

一開始測試還算順利,String 有提供 split 函數,可以把字串變成陣列。用來呈現主機的 IP 位置到一個事先準備好的 ListView 中。不過當程式離開、關閉的時候,要怎麼把字串拼回去,這就讓我們犯難了,因為 Array 並沒有提一個叫作 join 的函數,這是在 PHP 或 FLEX 已經習慣使用的東西。
其實並不是真的無法解決,我和同事都很清楚這其實是一個迴圈就可以解決的問題,不能接受的是 Android 和其基底 Java 都是滿有名東東,怎麼會沒有這麼基本的函數勒~~

查了網路上資料,發現 Java 有一個叫作 StringUtils 的類別,裡面就包含了 join 函數,可以把字串拼起來。很高興地請同事去試試,卻只得到「沒有這個類別」的錯誤訊息。再上網查查,也發現有人建議寫自己函數處理,但是自己就是不樂意這麼作,撰碼員作了幾年了,還去寫這種函數覺得很鳥。

也許上天感受到我的怨念,不久就找到有個叫作 TextUtils 的類別,裡面也有一個 join 的函數。
「join(CharSequence delimiter, Object[] tokens)」
第一個參數是合併時用來分隔字元,後面則是放一個陣列,猜想每個元素會先被執行過 toString 函數後再合併吧!

總之, Android 雖然沒有用 Java 原生的 String.join 函數,但還是提供了類似的 TextUtils 類別。不過很顯然知道的人並不是很多,還是有人自己生自己的函數來處理。

沒有留言:

張貼留言