java中的重复字符串

时间:2013-10-07 19:46:22

标签: java

我想按照,分隔的给定数字复制String。例如:

int i=3;
String word = "a"; 
String result = String.duplicate(word, ',', i);

// result is: "a,a,a"

我知道Ruby中有类似的东西,但我正在寻找Java。我用循环编写了一些代码然后删除了最后一个字符(,)。我想知道是否有内置函数。

我确实编写了自己的函数,我只是想知道是否有内置函数。

4 个答案:

答案 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();
}