0

これはどこにも見つかりませんでした。間違ったキーワードでそれを見つけるかもしれません。

写真は千の言葉を描くので、説明させてください。

不明な数の文字列のセットがあるとします。

String hello = "Hello world\n Welcome\n"
String goodbye = "Goodbye\n See you in the next life\n"
String do = "Do something\n Be part of us\n"

そのような結果を生成する関数が欲しい:

String hellogoodbyedo = "
  Hello world_________________Goodbye________________________Do Something\n
  Welcome_____________________See you in the next life_______Be part of us\n"

_はスペースを意味します。そのようなことを行う賢い方法はありますか?

4

5 に答える 5

5

使用できます

System.out.printf("%-20s%-s20s%-20s%n", field1, field2, field3);
于 2012-04-29T18:02:59.753 に答える
4

タブを使用する\tか、各行の文字数を数え、ループを使用して各単語の間にスペースを生成してみてください。

編集では、各変数を \n で分割し、次に各変数に最初のインスタンスを追加します。

于 2012-04-29T18:03:11.103 に答える
4

ソリューションには 2 つの部分があります。

を使用String.split() して、各文字列を改行文字で分割し、断片を配列に格納できます。

次に、他の回答に示されているようにprintforString.format()をフォーマット文字列と共に使用して、各文字列を左揃えにします。

String output = String.format("%-25s%-25s%-25s\n", string1, string2, string3);
于 2012-04-29T18:08:13.593 に答える
3

仮定

  • 入力は文字列の数です
  • 各文字列入力には不明な行数が含まれています
  • 出力は、入力の文字列ごとに 1 列で、行末を節約する必要があります
  • 出力列は、入力行の長さに合わせて可変幅にする必要があります

方法

public static String printColumns(String[] input) {
  String result = "";

    // Split input strings into columns and rows
    String[][] columns = new String[input.length][];
    int maxLines = 0;
    for (int i = 0; i < input.length; i++) {
        columns[i] = input[i].split("\n");
        if (columns[i].length > maxLines)
            maxLines = columns[i].length;
    }

    // Store an array of column widths
    int[] widths = new int[input.length];
    // calculate column widths
    for (int i = 0; i < input.length; i++) {
        int maxWidth = 0;
        for (int j = 0; j < columns[i].length; j++)
            if (columns[i][j].length() > maxWidth)
                maxWidth = columns[i][j].length();
        widths[i] = maxWidth + 1;
    }

    // "Print" all lines
    for (int line = 0; line < maxLines; line++) {
        for (int column = 0; column < columns.length; column++) {
            String s = line < columns[column].length ? columns[column][line] : "";
            result += String.format("%-"+widths[column]+"s", s);
        }
        result += "\n";
    }
    return result;
}

使用法

String hello = "Hello world\nWelcome\n";
String goodbye = "Goodbye\nSee you in the next life\n";
String dosomething = "Do something\nBe part of us\n";
String[] input = {hello, goodbye, dosomething};
System.out.println(printColumns(input));
于 2012-04-29T19:54:55.240 に答える
2

ここでチェックアウトprintf()

于 2012-04-29T18:06:49.690 に答える