如果不为空或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); }