在编程过程中偶尔会遇到需要将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 }