我无法弄清楚如何在JAVA中正确对齐这些列。我尝试了几种方法,但没有一种方法可行。它适用于其他角色,但不适用于中文。
String line1="冻结金额";
String line2="投资中金额";
String line3="投资中金额额";
String line4="投资中金中金额";
System.out.format("%-10s %s %n",line1, "XX" );
System.out.format("%-10s %s %n",line2, "XX" );
System.out.format("%-10s %s %n",line3, "XX" );
System.out.format("%-10s %s %n",line4, "XX" );
这是预期的结果,但即使在这里它也没有正确显示
冻结金额 XX
投资中金额 XX
投资中金额额 XX
投资中金中金额 XX
答案 0 :(得分:3)
您可以(ab-)使用tai tou全宽空格"\u3000"
:
System.out.println(String.format("%-10s %s",line1, "XX").replace(" ", "\u3000"));
虽然经过努力,但您可以进行HTML输出。
答案 1 :(得分:1)
Java代码没有任何问题,只有输出的显示方式。
输出如下:
冻结金额 XX
投资中金额 XX
投资中金额额 XX
投资中金中金额 XX
如果您实际上要计算字符数或执行:
System.out.println(String.format("%-10s %s ",line1, "XX").length());
System.out.println(String.format("%-10s %s ",line2, "XX").length());
System.out.println(String.format("%-10s %s ",line3, "XX").length());
System.out.println(String.format("%-10s %s ",line4, "XX").length());
您会发现每条线的长度相同(14)。
问题是显示字体不会显示与其他字符大小相同的中文字符。
答案 2 :(得分:0)
我使用这种方法,但是我不知道它如何与中文字符一起使用:
public String padRight(String s, int n)
{
return String.format("%1$-" + n + "s", s);
}
这样称呼:padRight(StringToBePaddedToTheRight, intNumberOfPadsToTheRight);
答案 3 :(得分:0)
谢谢大家
你是对的,代码只有编辑器配置没有错。
在我的情况下,我使用eclipse编辑器,我只是更改Unicode的默认字体。
冻结金额 XX
投资中金额 XX
投资中金额额 XX