可以将具有单个重复字符的Java String初始化为特定长度

时间:2009-12-14 11:52:41

标签: java string initialization

我想创建一个具有以下签名的函数:

public String createString(int length, char ch)

它应该返回一串指定长度的重复字符 例如,如果length为5且ch为'p',则返回值应为:

  

PPPPP

有没有办法在没有循环的情况下执行此操作,直到达到所需的长度? 没有任何外部定义的常量?

5 个答案:

答案 0 :(得分:88)

char[] chars = new char[len];
Arrays.fill(chars, ch);
String s = new String(chars);

答案 1 :(得分:30)

来自apache commons-lang的

StringUtils.repeat(str, count)

答案 2 :(得分:6)

对于记录,使用Java8,您可以使用流来执行此操作:

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

但这似乎有些矫枉过正。

答案 3 :(得分:6)

这是一个优雅而纯粹的Java单行解决方案:

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

来源:https://stackoverflow.com/a/4903603/462347

答案 4 :(得分:1)

更先进和可读,

 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;    
    }