创建包含 n 个字符的字符串

2022-08-31 06:51:13

在Java中,有没有办法创建具有指定字符的指定数量的字符串?在我的情况下,我需要创建一个包含十个空格的字符串。我目前的代码是:

final StringBuffer outputBuffer = new StringBuffer(length);
for (int i = 0; i < length; i++){
   outputBuffer.append(" ");
}
return outputBuffer.toString();

有没有更好的方法来完成同样的事情?特别是,我想要一些快速的东西(在执行方面)。


答案 1

可能是使用 API 的最短代码,仅:String

String space10 = new String(new char[10]).replace('\0', ' ');

System.out.println("[" + space10 + "]");
// prints "[          ]"

作为一种方法,无需直接实例化:char

import java.nio.CharBuffer;

/**
 * Creates a string of spaces that is 'spaces' spaces long.
 *
 * @param spaces The number of spaces to add to the string.
 */
public String spaces( int spaces ) {
  return CharBuffer.allocate( spaces ).toString().replace( '\0', ' ' );
}

调用使用:

System.out.printf( "[%s]%n", spaces( 10 ) );

答案 2

我强烈建议不要手动编写循环。在你的编程生涯中,你会一遍又一遍地这样做。阅读你的代码的人 - 包括你 - 总是需要投入时间,即使只是几秒钟,来消化循环的含义。

相反,重用一个可用的库,提供代码,就像Apache Commons Lang一样:StringUtils.repeat

StringUtils.repeat(' ', length);

这样,您也不必为性能而烦恼,因此隐藏了,编译器优化等的所有血腥细节。如果函数变得很慢,那将是库的一个错误。StringBuilder

有了Java 11,它变得更加容易:

" ".repeat(length);