我想创建一个有尾随空格来完成字符串缓冲区宽度的字符串。
例如:
Stringbuffer str = new Stringbuffer(10); //Create a string with 10 spaces.
str.append("Hello");
输出是“Hello”,没有任何尾随空格。但我想要的是带有 5 个尾随空格的“Hello”。
在上面的例子中,由于“Hello”有 5 个字符,它后面应该有 5 个更多的尾随空格。
请指教,thx
StringBuffer 实现了 Appendable。您可以使用此 StringBuffer 实例化一个 Formatter 对象,然后让 Formatter 为您完成工作:
StringBuilder sb = new StringBuilder(); // I prefer StringBuilder to StringBuffer
Formatter formatter = new Formatter(sb);
formatter.format("%-10s", "hello");
只需附加一个空格,直到长度小于 10:
while(str.length() < 10) {
str.append(" ");
}
看起来很简单
暗示 :
这是一种正确填充您的字符串的方法。您输入字符串,然后 int 用于所需的垫。
public static String padRight(String s, int n) {
return String.format("%1$-" + n + "s", s);
}
您可以先获取字符串,然后将其附加到您的 StringBuffer(或 StringBuilder)。
在您的代码中:
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
对于答案,您可以遵循上面的一些答案,例如在你好之后附加空格等。
其他答案说明如何解决您的问题。我只想指出问题中的一个误解。
StringBuffer str = new StringBuffer(10); //Create a string with 10 spaces.
事实上,这不是 StringBuffer(或 StringBuilder)构造函数参数的含义。它实际上在做的是指定一个初始容量。这本质上是对实现最初为 10 个字符分配空间的提示。
它不设置内容的实际大小。实际大小取决于您放入缓冲区/构建器的字符数。
它不限制缓冲区/构建器的大小。如果添加超过 10 个字符,则该实现会安静而有效地扩展缓冲区/构建器的后备存储。
(此外,除非您需要线程安全的缓冲区,否则最好使用StringBuilder
而不是StringBuffer
.)