答案 0 :(得分:3)
您在这里有几种选择:
String.format("%-20s :%20s%n", text1, text2)
显示格式化的字符串(数字可能会有所不同),以使文本正确对齐答案 1 :(得分:2)
您还可以编写自己的方法来格式化String
public static void main(String[] args) {
String line1 = "Importe a pagar ";
String line2 = "Descuento ";
String line3 = "Importe ";
String line4 = "Obsequio ";
String[] correctedStrings = setCorrectAmountOfTabs(line1, line2, line3, line4);
Arrays.stream(correctedStrings).map(line -> line + " : 50").forEach(System.out::println);
}
private static String[] setCorrectAmountOfTabs(String... lines) {
if (lines == null || lines.length == 0) return;
int lengthOfTab = 4;
int targetAmount = Arrays.stream(lines)
.map(line -> line.length() / lengthOfTab)
.max(Integer::compare)
.get();
return Arrays.stream(lines)
.map(line -> {
int currentAmount = line.length() / lengthOfTab;
String tabs = IntStream.rangeClosed(0, targetAmount - currentAmount)
.mapToObj(i -> "\t")
.collect(Collectors.joining());
return line + tabs;
})
.toArray(String[]::new);
}
该方法的执行产生以下结果
Importe a pagar : 50
Descuento : 50
Importe : 50
Obsequio : 50
然后,您可以操作输出String
数组以在组件内部使用它。不管您最长的String
如果我在上面添加一行,则会得到以下结果
Importe a pagar : 50
Descuento : 50
Importe : 50
Obsequio : 50
Adding a very long line to it : 50
答案 2 :(得分:1)
下面的这三个文本需要另外的"\t"
。发生这种情况的原因是,第一行左侧的文本太长,与第二列重叠,必须将下一段(在制表符之后)写在下一个“单元格”中。
答案 3 :(得分:1)
这样一个空格就像您正在使用制表符。