【发布时间】:2009-10-10 21:13:14
【问题描述】:
如果有的话
String[] s = new String[3];
s[0] = "Ap";
s[1] = "p";
s[2] = "le";
String result = ?
如果我想在不循环的情况下让 Apple 退出 s,我该怎么做?
有什么捷径吗?
【问题讨论】:
如果有的话
String[] s = new String[3];
s[0] = "Ap";
s[1] = "p";
s[2] = "le";
String result = ?
如果我想在不循环的情况下让 Apple 退出 s,我该怎么做?
有什么捷径吗?
【问题讨论】:
如果不循环对您来说比阻止导入另一个库更重要,或者如果您已经在使用apache commons lang,无论如何,您可以使用 StringUtils.join 方法
import org.apache.commons.lang.StringUtils;
String joined = StringUtils.join(s, "");
也许 Apache Commons 也有其他可能对您的项目感兴趣的方法。我发现它们是原生 Java 库中缺少的功能的非常有用的资源。
【讨论】:
不用循环,你可以:
public String joinpart(String[] a, int i, String prefix) {
if (i < a.length) {
return joinpart(a, i + 1, prefix + a[i]);
}
return prefix;
}
然后:
String[] a = new String[]{"Ap", "p", "le"};
String apple = joinpart(a, 0, "");
这称为递归解决方案。
【讨论】:
joinpart 中使用StringBuilder 来构造字符串。
如果您知道数组的长度,您可以轻松地执行以下操作:
String result = s[0] + s[1] +s[2];
另一种选择是执行以下操作,(这纯粹是学术性的,我不会在实际场景中使用它,因为它会从您的字符串中删除 [、] 和 <space>):
String result = Arrays.toString(s).replaceAll("[\\]\\[, ]", "");
另一种选择,与第一次尝试一起使用,但使用类似 C 的格式化程序:
System.out.println(String.format("%s%s%s", s));
【讨论】:
使用Dollar 很简单:
String[] array = new String[] { "Ap", "p", "le" };
String result = $(array).join(); // result now is "Apple"
【讨论】:
String result = s[0] + s[1] + s[2];
如果您有未知数量的条目,我认为您需要一个循环。
【讨论】:
Java 没有String.join() 类型的方法。如果你想隐藏循环,你必须自己滚动一个。
【讨论】: