如果不为空或null,请加入逗号

我看到了如何将String []连接到逗号分隔字符串的答案。

但是, 只有当值不为空时,我才需要util连接数组中的字符串。

最好的方法是什么? 没有循环之前在String []上删除。 我更喜欢一种兼具两者的方法。

EDITED

例如:

I, love, , u 

将会:

  I love u 

 public class So20111214a { public static String join(String[] argStrings) { if (argStrings == null) { return ""; } String ret = ""; if (argStrings.length > 0) { ret = argStrings[0]; } // if for (int i = 1; i  Mikhail Botvinnik Emanuel Lasker,José Raúl Capablanca,Alexander Alekhine,Siegbert Tarrasch,Frank Marshall I,love,u! */ } // So20111214a class 

PS:很抱歉使用? 操作员 – 我必须快速完成,我在工作。 🙂

在Java 8中,您可以使用Stream:

  List list = Arrays.asList("I", " ", "love", null, "you"); String message = list.stream().filter(StringUtils::isNotBlank) .collect(Collectors.joining(", ")); System.out.println("message = " + message); 

为什么不简单地循环数组并使用StringBuilder仅为非空值构建逗号分隔的字符串。

检查null / empty有什么问题吗?

 String[] values = ?; if (values != null && values.length > 0) { // join } 

您指向的答案已经使用StringUtils.join进行连接

您的要求不太适合,但它很简单,似乎最好实现您自己的连接循环,例如

  StringBuilder sb = new StringBuilder(); boolean first = true; for (String word: words) { if (word != null && (word = word.trim()).length() > 0) { if (first) { first = false; } else { sb.append(','); } sb.append(word); } } 

没有任何API ,我们可以加入非空的非 字符串数组,如下所示:

用户定义的方法:

 public String joinNonBlankStringArray(String s[], String separator) { StringBuilder sb = new StringBuilder(); if (s != null && s.length > 0) { for (String w : s) { if (w != null && !w.trim().isEmpty()) { sb.append(w); sb.append(separator); } } } return sb.substring(0, sb.length() - 1);// length() - 1 to cut-down last extra separator } 

调用用户定义的方法:

 String s[] = {" ","abc", "", "XYZ", " ", null, "123", null}; String joinVal = joinNonBlankStringArray(s, ",");// "abc,XYZ,123" 

对于null跳过番石榴最好的选择:

 Joiner.on(" ").skipNulls().join("I", null, "love", null, "u") 

雅加达StringUtils做到了。 这是从那里的代码:

 public static String join(Object[] array, String separator) { if (array == null) { return null; } return join(array, separator, 0, array.length); }