可以使用单个重复字符将Java字符串初始化为特定长度吗
我想创建一个具有以下签名的函数:可以使用单个重复字符将Java字符串初始化为特定长度吗,java,string,initialization,Java,String,Initialization,我想创建一个具有以下签名的函数: public String createString(int length, char ch) 它应该返回指定长度的重复字符字符串。 例如,如果长度为5且ch为“p”,则返回值应为: 购买力平价 有没有办法在达到所需长度之前不循环执行此操作? 并且没有任何外部定义的常量?char[]chars=new char[len]; 数组。填充(字符,ch); 字符串s=新字符串(字符); 来自apache commons lang对于记录,使用Java8,您可以使用s
public String createString(int length, char ch)
它应该返回指定长度的重复字符字符串。例如,如果长度为5且ch为“p”,则返回值应为: 购买力平价 有没有办法在达到所需长度之前不循环执行此操作?
并且没有任何外部定义的常量?
char[]chars=new char[len];
数组。填充(字符,ch);
字符串s=新字符串(字符);
来自apache commons lang对于记录,使用Java8,您可以使用streams实现这一点:
String p10times = IntStream.range(0, 10)
.mapToObj(x -> "p")
.collect(Collectors.joining());
但这似乎有点矫枉过正 这是一个优雅的纯Java单线解决方案: Java 11+:
String str=“p”。重复(5);//“购买力平价”
Java 11之前版本:
String str=新字符串(新字符[5])。替换(“\0”,“p”);//“购买力平价”
更高级、更可读
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,为什么还要写三行?@deGoot,因为你需要第三方库,而你可能已经有了这个库:)为了避免生成和丢弃IntStream值
String p10Times=Stream.generate(()->“p”).limit(10.collector(collector.joining())
看到所有的解决方案,我想知道String
是否应该有一个类似String(int-size,char-filler)
的构造函数,或者一个fillWith(char-filler)
方法。