Java 是否有一种实用方法可以按给定的字符串分隔列表?
在Java 是否有一种实用方法可以按给定的字符串分隔列表?,java,apache-commons,utility-method,Java,Apache Commons,Utility Method,在apachecommonlang或springutils中是否有类似的内容,或者您是否为此编写了自己的Util方法 List<String> list = new ArrayList<String>(); list.add("moo"); list.add("foo"); list.add("bar"); String enumeratedList = Util.enumerate(list, ", "); assert enumeratedList == "moo
apachecommonlang
或springutils
中是否有类似的内容,或者您是否为此编写了自己的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";
您可以通过以下方式使用(来自commons lang):
String enumeratedList = StringUtils.join(list.toArray(), ", ");
如果你不想依赖commons-lang,那么输入就很简单了。把一个列表转换成一个数组,然后再把它连接成一个字符串,这也不好。相反,只需迭代您的集合。比使用Collection更好的是使用Iterable,它可以处理任何可以迭代的内容(甚至是某种未知长度的流或集合) 提供类,可按如下方式使用:
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));
}
}
公共类主{
公共静态void main(字符串[]args){
List=Lists.newLinkedList();
列表。添加(“1”);
列表。添加(“2”);
列表。添加(“3”);
System.out.println(Joiner.on(“,”).join(list));
}
}
谢谢,API中忽略了这一点。虽然我喜欢bozho的解决方案,但我认为没有理由不为循环创建一个简单的,然后自己完成(需要3-4行代码)。我的意思是,如果到目前为止你还没有在你的项目中包括commons lang
,你会把它只包括在一个你可以自己编写一分钟的工具中吗?;-)@迪米特科:因为一条线小于3-4。它更具可读性,更不容易出错,一旦包含了库,您就可以“在任何地方”使用它。只是指出,在项目中只包含一个库是不值得的。如果你已经包含了它,为什么不全面使用它呢?完全同意
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
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));
}
}