如何在Java中对齐下一行​​?

时间:2013-09-23 14:18:31

标签: java encoding character-encoding string-formatting

我无法弄清楚如何在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

4 个答案:

答案 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