web-dev-qa-db-ja.com

Java単一の繰り返し文字を含む文字列を特定の長さに初期化できますか?

次のシグネチャを持つ関数を作成したいと思います。

public String createString(int length, char ch)

指定された長さの繰り返し文字の文字列を返す必要があります。
たとえば、長さが5でchが 'p'の場合、戻り値は次のようになります。

ppppp

必要な長さになるまでループせずにこれを行う方法はありますか?
そして外部で定義された定数なしで?

49
Ron Tuffin
char[] chars = new char[len];
Arrays.fill(chars, ch);
String s = new String(chars);
89
Joel Shemtov

StringUtils.repeat(str, count) Apache commons-langから

31
Bozho

エレガントで純粋なJava 1行のソリューションです。

String str = new String(new char[10]).replace("\0", "1");

ソース: https://stackoverflow.com/a/4903603/462347

7
Mike B.

記録のために、Java8を使用すると、ストリームでそれを行うことができます。

String p10times = IntStream.range(0, 10)
  .mapToObj(x -> "p")
  .collect(Collectors.joining());

しかし、これはやややり過ぎのようです。

6
T.Gounelle

少し進歩して読みやすく、

 public static String repeat(int len, String ch) {

        String s = IntStream.generate(() -> 1).limit(len).mapToObj(x -> ch).collect(Collectors.joining());
        System.out.println("s " + s);
        return s;    
    }
1
Sohan