我想用给定的数字复制一个字符串,用,
. 例如:
int i=3;
String word = "a";
String result = String.duplicate(word, ',', i);
// result is: "a,a,a"
我知道Ruby中有类似的东西,但我正在寻找Java。我用循环编写了一些代码,然后删除了最后一个字符(即,
)。我想知道是否有内置功能。
我确实编写了自己的函数,我只是想知道是否有内置函数..
我想用给定的数字复制一个字符串,用,
. 例如:
int i=3;
String word = "a";
String result = String.duplicate(word, ',', i);
// result is: "a,a,a"
我知道Ruby中有类似的东西,但我正在寻找Java。我用循环编写了一些代码,然后删除了最后一个字符(即,
)。我想知道是否有内置功能。
我确实编写了自己的函数,我只是想知道是否有内置函数..
Commons Lang - StringUtils#repeat:
StringUtils.repeat("a", ",", 3);
为什么不自己写一个方法
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();
}
本机 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"))
这是一个 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();
}