このような情報を整理したいと思います。
情報はセルで編成されますが、System.out.println
情報は非常に整理されていません。
System.out.format()
またはSystem.out.printf()
を使用できます(printf
は内部でformat
を呼び出すだけなので、両方のメソッドで同じ結果が得られます)。
以下に、テキストを左に揃え、未使用の場所をスペースで埋める例を示します。文字列を左に揃えるには、%-15s
を使用します。
%
reserve(プレースホルダー)15
文字の「場所」s
Stringデータ型-
と左から印刷を開始します。digitsを処理する場合は、左側に配置する必要がある最大4桁の数字に%-4d
のようなd
サフィックスを使用します。列の。
BTW printf
は、印刷データの後に自動的に行区切り記号を追加しません。そのため、wanを次の行に移動したい場合は、自分で行う必要があります。 \r
または\n
を使用できます。または、FormatterにOS依存の行区切り文字を生成させるには(Windowsの\r\n
のように)%n
プレースホルダーを使用できます(注:引数としてデータが必要です、JavaはOSに基づいて正しいシーケンスを提供します)。
Formatter
でサポートされる構文の詳細については、そのクラスのドキュメント を参照してください 。
String leftAlignFormat = "| %-15s | %-4d |%n";
System.out.format("+-----------------+------+%n");
System.out.format("| Column name | ID |%n");
System.out.format("+-----------------+------+%n");
for (int i = 0; i < 5; i++) {
System.out.format(leftAlignFormat, "some data" + i, i * i);
}
System.out.format("+-----------------+------+%n");
出力
+-----------------+------+
| Column name | ID |
+-----------------+------+
| some data0 | 0 |
| some data1 | 1 |
| some data2 | 4 |
| some data3 | 9 |
| some data4 | 16 |
+-----------------+------+
次の代替手段を試してください: asciitable 。
もともとASCIIとUTF-8文字を境界に使用して、テキストテーブルのいくつかの実装を提供します。
サンプルテーブルを次に示します。
┌─────────────────────────────────────────────────────────────────────────── ─────────────────────────┐ │表見出し│ ├────────── ─────────┬──────────────────┬──────────────────┬── ───────────────┤ │最初の行(col1)│いくつかの│以上│さらに│ ││情報│情報││ ├──────────────────┼──────────────────┼───────── ───────────┼─────────────────┤[.__ __。]│2行目│いくつかの│以上│さらに│ │(col1)│情報│情報││ ││(col2)│(col3)││ └───────────────────┴──────────────────┴─────────── ─────────┴─────────────────┘
最新バージョンを見つける:http://mvnrepository.com/artifact/de.vandermeer/asciitable
これを行うために特別に作成したクラスは完全に動的です: https://github.com/MRebhan/crogamp/blob/master/src/com/github/mrebhan/crogamp/cli/TableList.Java
次のように使用できます。
TableList tl = new TableList(3, "ID", "String 1", "String 2").sortBy(0).withUnicode(true);
// from a list
yourListOrWhatever.forEach(element -> tl.addRow(element.getID(), element.getS1(), element.getS2()));
// or manually
tl.addRow("Hi", "I am", "Bob");
tl.print();
Unicode文字を使用すると、次のようになります(注:すべての文字が同じ幅であるため、コンソールではより見やすくなります)。
┌─────────┬─────────────────────────────────────────────────────────────────────────┬────────────────────────────┐
│ Command │ Description │ Syntax │
┢━━━━━━━━━╈━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╈━━━━━━━━━━━━━━━━━━━━━━━━━━━━┪
┃ bye ┃ Quits the application. ┃ ┃
┃ ga ┃ Adds the specified game. ┃ <id> <description> <path> ┃
┃ gl ┃ Lists all currently added games ┃ [pattern] ┃
┃ gr ┃ Rebuilds the files of the currently active game. ┃ ┃
┃ gs ┃ Selects the specified game. ┃ <id> ┃
┃ help ┃ Lists all available commands. ┃ [pattern] ┃
┃ license ┃ Displays licensing info. ┃ ┃
┃ ma ┃ Adds a mod to the currently active game. ┃ <id> <file> ┃
┃ md ┃ Deletes the specified mod and removes all associated files. ┃ <id> ┃
┃ me ┃ Toggles if the selected mod is active. ┃ <id> ┃
┃ ml ┃ Lists all mods for the currently active game. ┃ [pattern] ┃
┃ mm ┃ Moves the specified mod to the specified position in the priority list. ┃ <id> <position> ┃
┃ top kek ┃ Test command. Do not use, may cause death and/or destruction ┃ ┃
┃ ucode ┃ Toggles advanced unicode. (Enhanced characters) ┃ [on|true|yes|off|false|no] ┃
┗━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
そして、ユニコード文字をオフにして(.withUnicode(true)を省略):
Command | Description | Syntax
--------+-------------------------------------------------------------------------+---------------------------
bye | Quits the application. |
ga | Adds the specified game. | <id> <description> <path>
gl | Lists all currently added games | [pattern]
gr | Rebuilds the files of the currently active game. |
gs | Selects the specified game. | <id>
help | Lists all available commands. | [pattern]
license | Displays licensing info. |
ma | Adds a mod to the currently active game. | <id> <file>
md | Deletes the specified mod and removes all associated files. | <id>
me | Toggles if the selected mod is active. | <id>
ml | Lists all mods for the currently active game. | [pattern]
mm | Moves the specified mod to the specified position in the priority list. | <id> <position>
top kek | Test command. Do not use, may cause death and/or destruction |
ucode | Toggles advanced unicode. (Enhanced characters) | [on|true|yes|off|false|no]
System.out.printf()
を使用します
例えば、
_String s = //Any string
System.out.printf(%10s, s);
_
stringの内容を出力します。正確に10文字を消費します。したがって、テーブルが必要な場合は、テーブル内の各セルが同じ長さに出力されることを確認してください。また、printf()
は新しい行を印刷しないため、自分で印刷する必要があります。
Java-ascii-table を使用できます。 著者のサイト も参照してください。
これも非常にうまく機能します http://sourceforge.net/projects/texttablefmt/ 。 Apacheもライセンスされています。
Spring Shellユーティリティクラスorg.springframework.Shell.table.TableModelを使用できます。
TableModel model = new BeanListTableModel<>(portConfigurations, headers);
TableBuilder tableBuilder = new TableBuilder(model);
tableBuilder.addFullBorder(BorderStyle.oldschool);
//TableUtils.applyStyle(tableBuilder);
return tableBuilder.build().render(100);
正しいメソッドでstring.format()を使用できますコードはこのように見えるかもしれません
StringBuilder sb=new StringBuilder();
for(int i = 1; i <= numberOfColumns; i++)
{
sb.append(String.format(%-10s,rsMetaData.getColumnLabel(i);
}
ライブラリのように、私は仕事をするものがあるとは思わないが、私は間違っているかもしれない!実際に研究を行います
こちらもご覧ください http://docs.Oracle.com/javase/1.5.0/docs/api/Java/util/Formatter.html#syntax
[〜#〜] tuiawt [〜#〜] を使用できます [〜#〜] awt [〜#〜] コンソールウィンドウのコンポーネント。ただし、 リスト または テーブル をサポートしているようには見えませんが、出発点になる場合があります。