上善若水
          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或數(shù)組以某個字符間隔的形式將其拼接成一個字符串,比如在發(fā)送郵件時,to列表是以分號分割的字符串,然而在程序中我們可能會一List<String>或String[]的形式存在,此時就需要做List或數(shù)組到String的轉(zhuǎn)換。
          在C#中,String類提供了一個叫Join的方法,因而我們使用一句代碼就可以完成這樣的工作:
          string result = string.Join("", toList.ToArray());
          但是在Java中貌似沒有提供類似的方法(至少我還沒有找到),既然沒有提供,我們就可以自己來寫一個:
          public class StringUtils {
              
          /**
               * StringUitls類中的方法都是靜態(tài)的,
               * 阻止其創(chuàng)建實例,以引起一些誤解。
               * 另一種做法是將其變?yōu)閍bstract類,
               * 但是這樣也會引起一些誤解,
               * 因為abstract類的意思就是可以繼承的,
               * 然而該類卻不應(yīng)該由其他類來繼承。
               * 因而abstract類個人感覺不是一種好的做法。
               
          */
              
          private StringUtils() { }
              
              
          /**
               * 將array中的內(nèi)容以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中的內(nèi)容以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
          主站蜘蛛池模板: 柞水县| 黎平县| 嘉禾县| 边坝县| 镇平县| 托克托县| 刚察县| 四川省| 铜山县| 云南省| 共和县| 高清| 邯郸市| 无极县| 嘉荫县| 衢州市| 通榆县| 浮山县| 达日县| 中江县| 嘉禾县| 库伦旗| 八宿县| 宿州市| 文水县| 洪江市| 虹口区| 理塘县| 山阴县| 诸城市| 邻水| 泽州县| 资溪县| 眉山市| 治多县| 乐东| 霍林郭勒市| 长沙县| 固始县| 竹山县| 福建省|