我想按照,
分隔的给定数字复制String。例如:
int i=3;
String word = "a";
String result = String.duplicate(word, ',', i);
// result is: "a,a,a"
我知道Ruby中有类似的东西,但我正在寻找Java。我用循环编写了一些代码然后删除了最后一个字符(,
)。我想知道是否有内置函数。
我确实编写了自己的函数,我只是想知道是否有内置函数。
答案 0 :(得分:5)
Commons Lang - StringUtils#repeat:
StringUtils.repeat("a", ",", 3);
答案 1 :(得分:1)
为什么不写一个你自己的方法
public String duplicate(String word, String separator, int count) {
StringBuilder str = new StringBuilder();
for (int i =0; i < count; i++) {
str.append(word);
if (i != count - 1) {
// append comma only for more than one words
str.append(separator);
}
}
return str.toString();
}
答案 2 :(得分:0)
本机Java中没有任何东西可以做到这一点(除了显然实际上这样做):
public static void main(String[] args) {
System.out.println(join("a", ",", 3));
}
public static String join(final String in, final String on, final int num) {
if (num < 1) {
throw new IllegalArgumentException();
}
final StringBuilder stringBuilder = new StringBuilder(in);
for (int i = 1; i < num; ++i) {
stringBuilder.append(on).append(in);
}
return stringBuilder.toString();
}
在番石榴你可以做到:
Joiner.on(',').join(Collections.nCopies(3, "a"))
答案 3 :(得分:0)
这是一个log(n)解决方案:
public static String join(String string, int n){
StringBuilder sb = new StringBuilder(string);
StringBuilder out = new StringBuilder();
sb.append(",");
for (;n>0;n=n>>1){
if (n%2==1){
out.append(sb.toString());
}
sb.append(sb);
}
out.deleteCharAt(out.length()-1);
return out.toString();
}