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

标签 java string

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

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

也就是说,如果你能做到 new String(10, '*') 那就太好了并从那里创建一个新的字符串,长度为 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 更快。

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

最佳答案

Apache Commons Lang(可能在任何重要项目的类路径中都足够有用)具有 StringUtils.repeat() :

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

简单!

关于Java - 创建一个具有指定长度并填充特定字符的新字符串实例。最佳解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1802915/

相关文章:

java - 我的代码 Thread.sleep 有效,但不能隐式等待?

string - 使用 Golang 计算文本文件中单例的数量

python - !r 在 str() 和 repr() 中做了什么?

java - Java 中连接字符串会生成 Between-in null

java - 未经检查的转换

java - 幕后的外观和构建器模式

java - 在不使用字符串的情况下将 double 格式设置为 2 个小数位

java - 当数据跨越多个 block 时如何建模分页

string - 如何找到第n个标记的位置

xcode - 字符串在Swift中没有名为 'text'的成员错误