0

我试图在左、右和中心返回一个已经合理的字符数组。

假设每行最多有 6 个字符。合理文本中的相应输出将是。

Left:
How is
your
day

Center:
How is
 your
 day

Right:
How is
  your
   day

通过使用 for 循环,我在行超过数组内的最大限制 6 之前添加了一个 '\n'。

Example[3] = '\n';

我如何能够返回数组以便它以合理的格式输出?

我做了一些搜索,我所能找到的只是如何证明一个字符串的合理性。

对不起,可怕的格式。不知道如何格式化。

4

2 回答 2

2

这是一个非常基本的例子......

它基本上String用空格填充值以提供对齐...

public class Align {

    public static void main(String[] args) {
        String values[] = new String[]{
            "How is",
            "your",
            "day"};

        int maxLength = 0;
        for (String value : values) {
            maxLength = Math.max(value.length(), maxLength);
        }

        System.out.println("Left:");
        for (String value : values) {
            System.out.println("[" + leftPad(value, maxLength) + "]");
        }
        System.out.println("\nRight:");
        for (String value : values) {
            System.out.println("[" + rightPad(value, maxLength) + "]");
        }
        System.out.println("\nCenter:");
        for (String value : values) {
            System.out.println("[" + centerPad(value, maxLength) + "]");
        }
    }

    public static String leftPad(String sValue, int iMinLength) {

        StringBuilder sb = new StringBuilder(iMinLength);
        sb.append(sValue);

        while (sb.length() < iMinLength) {

            sb.append(" ");

        }

        return sb.toString();

    }

    public static String rightPad(String sValue, int iMinLength) {

        StringBuilder sb = new StringBuilder(iMinLength);
        sb.append(sValue);

        while (sb.length() < iMinLength) {

            sb.insert(0, " ");

        }

        return sb.toString();

    }

    public static String centerPad(String sValue, int iMinLength) {

        if (sValue.length() < iMinLength) {

            int length = sValue.length();
            int left = (iMinLength - sValue.length()) / 2;
            int right = iMinLength - sValue.length() - left;

            StringBuilder sb = new StringBuilder(sValue);
            for (int index = 0; index < left; index++) {
                sb.insert(0, " ");
            }
            for (int index = 0; index < right; index++) {
                sb.append(" ");
            }

            sValue = sb.toString();

        }

        return sValue;

    }
}

这只是输出......

Left:
[How is]
[your  ]
[day   ]

Right:
[How is]
[  your]
[   day]

Center:
[How is]
[ your ]
[ day  ]
于 2013-05-30T05:31:25.237 回答
0

Commons StringUtils有多种方法来调整各种格式的字符串。像,leftpad,rightpad,centerpad

于 2013-05-30T06:15:45.420 回答