在C#中,String類提供了一個叫Join的方法,因而我們使用一句代碼就可以完成這樣的工作:
string result = string.Join("; ", toList.ToArray());
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);
}
}
/**
* 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 }
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 }