首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java -创建一个具有指定长度并填充了特定字符的新String实例。最好的解决方案?

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

Stack Overflow用户
提问于 2009-11-26 18:38:34
回答 15查看 179.6K关注 0票数 98

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

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

也就是说,如果你可以做new String(10, '*'),并从那里创建一个新的字符串,长度为10个字符,都有一个*,那就太酷了。

因为这样的构造函数不存在,并且您不能从String扩展,所以您必须创建一个包装器类或一个方法来为您完成此操作。

此时此刻,我使用的是:

代码语言:javascript
复制
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更快。

还有谁有更好的解决方案?

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2009-11-26 18:47:53

Apache Commons Lang (可能非常有用,可以放在任何重要项目的类路径中)具有StringUtils.repeat()

代码语言:javascript
复制
String filled = StringUtils.repeat("*", 10);

简单!

票数 133
EN

Stack Overflow用户

发布于 2009-11-26 18:42:53

只需使用apache commons lang项目中的StringUtils类。您有一个leftPad方法:

代码语言:javascript
复制
StringUtils.leftPad("foobar", 10, '*'); // Returns "****foobar"
票数 106
EN

Stack Overflow用户

发布于 2009-11-26 18:43:44

不需要执行循环,只使用标准Java库类:

代码语言:javascript
复制
protected String getStringWithLengthAndFilledWithCharacter(int length, char charToFill) {
  if (length > 0) {
    char[] array = new char[length];
    Arrays.fill(array, charToFill);
    return new String(array);
  }
  return "";
}

如您所见,我还为length == 0添加了适当的代码。

票数 60
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1802915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档