1

我想创建一个有尾随空格来完成字符串缓冲区宽度的字符串。

例如:

Stringbuffer str = new Stringbuffer(10);  //Create a string with 10 spaces.
str.append("Hello");

输出是“Hello”,没有任何尾随空格。但我想要的是带有 5 个尾随空格的“Hello”。

在上面的例子中,由于“Hello”有 5 个字符,它后面应该有 5 个更多的尾随空格。

请指教,thx

4

6 回答 6

3

StringBuffer 实现了 Appendable。您可以使用此 StringBuffer 实例化一个 Formatter 对象,然后让 Formatter 为您完成工作:

StringBuilder sb = new StringBuilder();  // I prefer StringBuilder to StringBuffer
Formatter formatter = new Formatter(sb);
formatter.format("%-10s", "hello");
于 2012-11-06T03:05:01.457 回答
2

只需附加一个空格,直到长度小于 10:

while(str.length() < 10) {
    str.append(" ");
}
于 2012-11-06T02:58:39.103 回答
0

看起来很简单

暗示 :

  1. 一个for循环,将迭代器初始化为字符串的长度并循环它直到它是10。
  2. 内部循环将空格附加到字符串。
于 2012-11-06T02:59:53.113 回答
0

这是一种正确填充您的字符串的方法。您输入字符串,然后 int 用于所需的垫。

public static String padRight(String s, int n) { return String.format("%1$-" + n + "s", s);
}

您可以先获取字符串,然后将其附加到您的 StringBuffer(或 StringBuilder)。

于 2012-11-06T03:03:48.713 回答
0

在您的代码中:

Stringbuffer str = new Stringbuffer(10);  //Create a string with 10 spaces.

不创建包含 10 个空格的字符串。它实际上创建了一个容量为 10 的字符串。您可以查看 java 文档:http ://docs.oracle.com/javase/1.5.0/docs/api/java/lang/StringBuffer.html

对于答案,您可以遵循上面的一些答案,例如在你好之后附加空格等。

于 2012-11-06T03:09:21.570 回答
0

其他答案说明如何解决您的问题。我只想指出问题中的一个误解。

StringBuffer str = new StringBuffer(10);  //Create a string with 10 spaces.

事实上,这不是 StringBuffer(或 StringBuilder)构造函数参数的含义。它实际上在做的是指定一个初始容量。这本质上是对实现最初为 10 个字符分配空间的提示。

  • 它不设置内容的实际大小。实际大小取决于您放入缓冲区/构建器的字符数。

  • 它不限制缓冲区/构建器的大小。如果添加超过 10 个字符,则该实现会安静而有效地扩展缓冲区/构建器的后备存储。

(此外,除非您需要线程安全的缓冲区,否则最好使用StringBuilder而不是StringBuffer.)

于 2012-11-06T03:16:23.747 回答