上善若水
          In general the OO style is to use a lot of little objects with a lot of little methods that give us a lot of plug points for overriding and variation. To do is to be -Nietzsche, To bei is to do -Kant, Do be do be do -Sinatra
          posts - 146,comments - 147,trackbacks - 0
          在編程過程中偶爾會遇到需要將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
               * 
          @param delimiter
               * 
          @return
               
          */
              @SuppressWarnings(
          "unchecked")
              
          public static String join(List list, String delimiter) {
                  
          if(list == null) {
                      
          throw new IllegalArgumentException();
                  }
                  
                  
          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     }

          posted on 2011-06-20 13:27 DLevin 閱讀(6999) 評論(0)  編輯  收藏 所屬分類: Core Java
          主站蜘蛛池模板: 古丈县| 吴桥县| 邹平县| 将乐县| 建水县| 桃园县| 保亭| 襄汾县| 大安市| 克东县| 商洛市| 白河县| 隆回县| 垫江县| 光山县| 米易县| 竹山县| 浦北县| 册亨县| 开平市| 安福县| 峨眉山市| 长寿区| 滨海县| 册亨县| 双辽市| 来宾市| 二手房| 济阳县| 酉阳| 信阳市| 新津县| 昌平区| 闵行区| 枣庄市| 荣昌县| 蕉岭县| 隆昌县| 通渭县| 格尔木市| 鄯善县|