我想加入一个字符串[]与胶水字符串。有这个函数吗?
当前回答
谷歌番石榴的库也有这种能力。你也可以从API中看到String[]的例子。
正如api中已经描述的,要注意构建器方法的不可变性。
它可以接受一个对象数组,所以它在你的情况下是可行的。在我以前的经验中,我尝试加入一个堆栈,这是一个可迭代的,它工作得很好。
我的例子:
Deque<String> nameStack = new ArrayDeque<>();
nameStack.push("a coder");
nameStack.push("i am");
System.out.println("|" + Joiner.on(' ').skipNulls().join(nameStack) + "|");
打印出来:|我是一个编码员|
其他回答
如果您正在寻找一个快速的数组到字符串转换,请尝试Arrays.toString()。
创建传递对象[]的String表示形式。结果是 用括号括起来(“[]”),每个元素都被转换为一个String 通过String.valueOf(Object)并以“,”分隔。如果数组是 Null,则返回" Null "。
考虑到:
String[] a = new String[] { "Hello", "World", "!" };
然后,作为coobird的答案的替代方案,胶水是“,”:
Arrays.asList(a).toString().replaceAll("^\\[|\\]$", "")
或者连接不同的字符串,例如“&".
Arrays.asList(a).toString().replaceAll(", ", " & ").replaceAll("^\\[|\\]$", "")
然而……只有当你知道数组或列表中的值不包含字符串“,”时,这个方法才有效。
我使用StringBuilder这样做:
public static String join(String[] source, String delimiter) {
if ((null == source) || (source.length < 1)) {
return "";
}
StringBuilder stringbuilder = new StringBuilder();
for (String s : source) {
stringbuilder.append(s + delimiter);
}
return stringbuilder.toString();
} // join((String[], String)
谷歌番石榴的库也有这种能力。你也可以从API中看到String[]的例子。
正如api中已经描述的,要注意构建器方法的不可变性。
它可以接受一个对象数组,所以它在你的情况下是可行的。在我以前的经验中,我尝试加入一个堆栈,这是一个可迭代的,它工作得很好。
我的例子:
Deque<String> nameStack = new ArrayDeque<>();
nameStack.push("a coder");
nameStack.push("i am");
System.out.println("|" + Joiner.on(' ').skipNulls().join(nameStack) + "|");
打印出来:|我是一个编码员|
就像最近的许多问题一样,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, !"
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 使用C返回一个数组
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 向对象数组添加属性
- 在Java流是peek真的只是调试?