Java - 创建具有指定长度并用特定字符填充的新字符串实例。最佳解决方案?

2022-08-31 09:43:44

我确实检查了其他问题;这个问题的重点是以最有效的方式解决这个特定的问题。

有时,您希望创建一个具有指定长度的新字符串,并使用默认字符填充整个字符串。

也就是说,如果你能从那里创建一个新的字符串,长度为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);
}

它仍然缺乏任何检查(即,当长度为0时,它将不起作用)。我首先构造数组,因为我相信它比使用字符串连接或使用StringBuffer更快。

还有其他人有更好的解决方案吗?


答案 1

Apache Commons Lang(可能足够有用,可以在任何非平凡项目的类路径上)具有StringUtils.repeat()

String filled = StringUtils.repeat("*", 10);

容易!


答案 2

只需使用 Apache commons lang 项目中的 StringUtils 类即可。你有一个左键方法

StringUtils.leftPad("foobar", 10, '*'); // Returns "****foobar"