我要求 Joiner 能够为元素添加前缀和后缀。
例如
String str[] = {"a", "b", "c"};
Joiner.on(",").prefix("'").suffix("'").join(str);
预期输出为:
'a','b','c'
我们有什么替代方案吗?因为番石榴不这样做(或者我不知道)。 java 8 有更好的选择吗?
你可以使用番石榴List#transform
进行转变a --> 'a'
然后使用Joiner
在转换后的列表上。transform
仅适用于Iterable
但对象不在数组上。代码仍然足够简洁:
List<String> strList = Lists.newArraylist(str); // where str is your String[]
Joiner.on(',').join(Lists.transform(str, surroundWithSingleQuotes));
其中变换如下:
Function<String, String> surroundWithSingleQuotes = new Function<String, String>() {
public String apply(String string) {
return "'" + string + "'";
}
};
有人可能会说这是一种冗长的方法,但我很欣赏transform
范例。
编辑(因为现在有 Java 8)
在 Java 8 中,所有这些都可以使用以下命令在一行中完成Stream http://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html界面如下:
strList.stream().map(s -> "'" + s + "'").collect(Collectors.joining(","));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)