在编程过程中偶尔会遇到需要将List或数组以某个字符间隔的形式将其拼接成一个字符串,比如在发送邮件时,to列表是以分号分割的字符串,然而在程序中我们可能会一List<String>或String[]的形式存在,此时就需要做List或数组到String的转换。
在C#中,String类提供了一个叫Join的方法,因而我们使用一句代码就可以完成这样的工作:
但是在Java中貌似没有提供类似的方法(至少我还没有找到),既然没有提供,我们就可以自己来写一个:
测试代码如下:
在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 }