天天看點

List或數組到String的轉換

在程式設計過程中偶爾會遇到需要将list或數組以某個字元間隔的形式将其拼接成一個字元串,比如在發送郵件時,to清單是以分号分割的字元串,然而在程式中我們可能會一list<string>或string[]的形式存在,此時就需要做list或數組到string的轉換。

在c#中,string類提供了一個叫join的方法,因而我們使用一句代碼就可以完成這樣的工作:

string result = string.join("; ", tolist.toarray());

但是在java中貌似沒有提供類似的方法(至少我還沒有找到),既然沒有提供,我們就可以自己來寫一個:

public class stringutils {

    /**

     * stringuitls類中的方法都是靜态的,

     * 阻止其建立執行個體,以引起一些誤解。

     * 另一種做法是将其變為abstract類,

     * 但是這樣也會引起一些誤解,

     * 因為abstract類的意思就是可以繼承的,

     * 然而該類卻不應該由其他類來繼承。

     * 因而abstract類個人感覺不是一種好的做法。

     */

    private stringutils() { }

     * 将array中的内容以delimiter為間隔拼接字元串

     * 

     * @param array

     * @param delimiter

     * @return

    public static string join(object[] array, string delimiter) {

        if(array == null) {

            throw new illegalargumentexception();

        }

        if(array.length == 0) {

            return "";

        stringbuilder builder = new stringbuilder();

        for(object item : array) {

            builder.append(item.tostring() + delimiter);

        builder.delete(builder.length() - delimiter.length(), builder.length());

        return builder.tostring();

    }

     * 将list中的内容以delimiter為間隔拼接字元串

     * @param list

    @suppresswarnings("unchecked")

    public static string join(list list, string delimiter) {

        if(list == null) {

        return join(list.toarray(), delimiter);

}

測試代碼如下:

 1     @test

 2     public void testlisttostring() {

 3         list<string> list = new arraylist<string>();

 4         list.add("item1");

 5         list.add("item2");

 6         list.add("item3");

 7         

 8         string expected = "[item1, item2, item3]";

 9         

10         assertequals(expected, list.tostring());

11     }

12     

13     @test

14     public void testlisttostring2() {

15         list<string> list = new arraylist<string>();

16         list.add("item1");

17         list.add("item2");

18         list.add("item3");

19         

20         string expected = "item1;item2;item3";

21         

22         assertequals(expected, stringutils.join(list, ";"));

23     }