3

我想用给定的数字复制一个字符串,用,. 例如:

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

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

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

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

4

4 回答 4

6

Commons Lang - StringUtils#repeat

StringUtils.repeat("a", ",", 3);
于 2013-10-07T19:49:46.670 回答
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();
}
于 2013-10-07T19:52:55.520 回答
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"))
于 2013-10-07T19:49:12.093 回答
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();
}
于 2013-10-07T20:15:47.083 回答