我想加入一个字符串[]与胶水字符串。有这个函数吗?
当前回答
无论选择哪种方法,都要注意数组中的空值。它们的字符串表示形式是“null”,所以如果不是你想要的行为,跳过null元素。
String[] parts = {"Hello", "World", null, "!"};
Stream.of(parts)
.filter(Objects::nonNull)
.collect(Collectors.joining(" "));
其他回答
“我有最短的”挑战,以下是我的;)
迭代:
public static String join(String s, Object... a) {
StringBuilder o = new StringBuilder();
for (Iterator<Object> i = Arrays.asList(a).iterator(); i.hasNext();)
o.append(i.next()).append(i.hasNext() ? s : "");
return o.toString();
}
递归:
public static String join(String s, Object... a) {
return a.length == 0 ? "" : a[0] + (a.length == 1 ? "" : s + join(s, Arrays.copyOfRange(a, 1, a.length)));
}
你可以很容易地在大约十行代码中编写这样一个函数:
String combine(String[] s, String glue)
{
int k = s.length;
if ( k == 0 )
{
return null;
}
StringBuilder out = new StringBuilder();
out.append( s[0] );
for ( int x=1; x < k; ++x )
{
out.append(glue).append(s[x]);
}
return out.toString();
}
要从 “str1”、“str2”, “” 获取 “str1, str2”:
Stream.of("str1", "str2", "").filter(str -> !str.isEmpty()).collect(Collectors.joining(", "));
此外,您还可以添加额外的空检查
就像最近的许多问题一样,Java 8来拯救:
Java 8在Java .lang. string中添加了一个新的静态方法,它的功能正是你想要的:
public static String join(CharSequence delimeter, CharSequence... elements);
使用它:
String s = String.join(", ", new String[] {"Hello", "World", "!"});
结果:
"Hello, World, !"
据我所知,没有内置的。
Apache Commons Lang有一个名为StringUtils的类,其中包含许多连接函数。
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 使用C返回一个数组
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 向对象数组添加属性
- 在Java流是peek真的只是调试?