在程式設計過程中偶爾會遇到需要将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 }