center将要打印的字符串对齐到文件中

时间:2012-09-28 18:58:39

标签: java string formatting string-formatting

为什么在使用Formatter等左右对齐非常简单时找到一个String函数来居中对齐我的字符串是一项如此艰巨的任务。

我想格式化输出文件

                                Nodes Expanded
                       Euclidean   Manhattan    Chessboard
Input1                     2           2             2
Input2                     6           6             6
Input3                     -           -             -

伪代码:

    String line1="Nodes Expanded";
    line1.center(50);  //length of string =50

我可以将PrintWriter用于String。

我必须为此构建逻辑,还是我不知道某些内置函数?

1 个答案:

答案 0 :(得分:3)

以下是将文字置于中心的一种方法:

public String center (String s, int length) {
    if (s.length() > length) {
        return s.substring(0, length);
    } else if (s.length() == length) {
        return s;
    } else {
        int leftPadding = (length - s.length()) / 2; 
        StringBuilder leftBuilder = new StringBuilder();
        for (int i = 0; i < leftPadding; i++) {
            leftBuilder.append(" ");
        }

        int rightPadding = length - s.length() - leftPadding;
        StringBuilder rightBuilder = new StringBuilder();
        for (int i = 0; i < rightPadding; i++) 
            rightBuilder.append(" ");

        return leftBuilder.toString() + s 
                + rightBuilder.toString();
    }
}