Java 的 String.format 方法中的可变宽度

2022-09-04 21:43:54

我正在处理一个需要显示文本树的项目。我试图使用Java的String.format方法来简化格式化过程,但是在尝试应用可变宽度时遇到了麻烦。

当前我有一个变量(一个int),称为深度。

我尝试执行以下操作:

String.format("%"+depth+"s"," ") + getOriginalText() + "\n";

但是,我收到以下错误。

java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags = 0

关于如何做到这一点的任何建议,或者我应该只满足于循环?

感谢您的帮助!


答案 1

这有效:

int depth = 5;
String str= "Hello"+ String.format("%"+depth+"s"," ") + "world" + "\n";
System.out.println(str);

它打印5个,而中间有空格。

世界您好。

请检查您的代码,并确保为其分配了有效值。最有可能的是(中的无效值)是问题所在。depthintdepth


答案 2

您可以使用“System.out.printf”命令尝试以下操作:

int depth = 10;

System.out.printf("%s" + "%" +depth + "s", "Hello","World" );

世界您好