3

是否有类似以下的内容,Apache Common Lang或者Spring Utils您​​是否为此编写了自己的 Util 方法?

List<String> list = new ArrayList<String>();
list.add("moo");
list.add("foo");
list.add("bar");

String enumeratedList = Util.enumerate(list, ", ");

assert enumeratedList == "moo, foo, bar";

我记得implode在php中的使用,这是我搜索java的。

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);
4

3 回答 3

11

您可以通过StringUtils.join(Object[] array, String delimiter)以下方式使用(来自 commons-lang):

String enumeratedList = StringUtils.join(list.toArray(), ", ");
于 2010-03-10T14:10:28.930 回答
4

Google Collections提供了Joiner类,可以这样使用:

public class Main {

    public static void main(String[] args) {
        List<String> list = Lists.newLinkedList();
        list.add("1");
        list.add("2");
        list.add("3");
        System.out.println(Joiner.on(", ").join(list));
    }

}
于 2010-03-10T15:21:04.470 回答
3

如果您不想依赖 commons-lang,那么实现起来非常简单。将 List 转换为 Array 以将其再次加入 String 也不是很好。相反,只需遍历您的集合。比使用 Collection 更好的是使用 Iterable 处理任何可以迭代的东西(甚至是某种流或未知长度的集合)。

import java.util.Arrays;
import java.util.Iterator;

public class JoinDemo {
  public static String join(String sep, Iterable<String> i) {
    StringBuilder sb = new StringBuilder();
    for (Iterator<String> it = i.iterator(); it.hasNext();) {
      sb.append(it.next());
      if (it.hasNext())
        sb.append(sep);
    }
    return sb.toString();
  }

  public static void main(String[] args) {
    System.out.println(join(",", Arrays.asList(args)));
  }
}

例子:

# javac JoinDemo.java
# java JoinDemo a b c
a,b,c
于 2010-03-10T14:16:38.280 回答