2013-10-07 30 views
2

我想複製一個由給定數字,分隔的字符串。例如:java中的重複字符串

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

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

我知道在Ruby中有類似的東西,但我正在使用Java。我用循環編寫了一些代碼,然後刪除了最後一個字符(即,)。我想知道是否有內置功能。

我沒有寫我自己的功能,我只是想知道是否有內置的爲..

+2

幾乎重複http://stackoverflow.com/questions/1235179/simple (但不完全) –

+0

您可能也有興趣https://bitbucket.org/adamldavis/dollar/wiki/Home –

回答

5

下議院郎 - StringUtils#repeat

StringUtils.repeat("a", ",", 3); 
+0

它不是內置的,但仍然是一個好去處! –

+0

的確如此,但是在問題被改寫之前我寫下了它,並且*「讓所有人都編寫如何連接字符串」狂熱*開始:)。 –

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")) 
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(); 
} 
+0

使用'StringBuilder'。 – GGrec

0

這裏有一個日誌(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(); 
} 
+1

這實際上比簡單的循環做更多的工作。沒有多少可以做得更快。只有我能想出的東西是計算所需的空間量並在填充之前預先分配緩衝區 –