我确实检查了其他问题;这个问题的重点是最有效地解决这个特定问题。
有时您想创建一个具有指定长度的新字符串,并使用默认字符填充整个字符串。
也就是说,如果您可以new String(10, '*')从那里创建一个新的String(长度为10个字符,都带有*),那就太酷了。
new String(10, '*')
因为这样的构造函数不存在,并且不能从String扩展,所以必须创建包装器类或方法来为您执行此操作。
目前,我正在使用此:
protected String getStringWithLengthAndFilledWithCharacter(int length, char charToFill) { char[] array = new char[length]; int pos = 0; while (pos < length) { array[pos] = charToFill; pos++; } return new String(array); }
它仍然缺少任何检查(即,当length为0时将不起作用)。我之所以首先构造数组,是因为我相信它比使用字符串合并或使用StringBuffer这样做要快。
还有谁有更好的解决方案?
Apache Commons Lang(可能非常有用,可以在任何不重要的项目的类路径中使用)具有StringUtils.repeat():
String filled = StringUtils.repeat("*", 10);
简单!