天天看点

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     }