web-dev-qa-db-ja.com

コンソールでASCIIを使用してテーブルを作成するにはどうすればよいですか?

このような情報を整理したいと思います。

情報はセルで編成されますが、System.out.println情報は非常に整理されていません。

or this

33

System.out.format()またはSystem.out.printf()を使用できます(printfは内部でformatを呼び出すだけなので、両方のメソッドで同じ結果が得られます)。

以下に、テキストを左に揃え、未​​使用の場所をスペースで埋める例を示します。文字列を左に揃えるには、%-15sを使用します。

  • % reserve(プレースホルダー)
  • 15文字の「場所」
  • s St​​ringデータ型
  • -と左から印刷を開始します。

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   |
+-----------------+------+
61
Pshemo

次の代替手段を試してください: asciitable

もともとASCIIとUTF-8文字を境界に使用して、テキストテーブルのいくつかの実装を提供します。

サンプルテーブルを次に示します。

    ┌─────────────────────────────────────────────────────────────────────────── ─────────────────────────┐
│表見出し│
├────────── ─────────┬──────────────────┬──────────────────┬── ───────────────┤
│最初の行(col1)│いくつかの│以上│さらに│
││情報│情報││
├──────────────────┼──────────────────┼───────── ───────────┼─────────────────┤[.__ __。]│2行目│いくつかの│以上│さらに│
│(col1)│情報│情報││
││(col2)│(col3)││
└───────────────────┴──────────────────┴─────────── ─────────┴─────────────────┘

最新バージョンを見つける:http://mvnrepository.com/artifact/de.vandermeer/asciitable

参照:https://stackoverflow.com/a/39806611/36357

26
Stephan

これを行うために特別に作成したクラスは完全に動的です: 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]
8

System.out.printf()を使用します

例えば、

_String s = //Any string
System.out.printf(%10s, s);
_

stringの内容を出力します。正確に10文字を消費します。したがって、テーブルが必要な場合は、テーブル内の各セルが同じ長さに出力されることを確認してください。また、printf()は新しい行を印刷しないため、自分で印刷する必要があります。

5
jedyobidan

Java-ascii-table を使用できます。 著者のサイト も参照してください。

4
kfoxon

これも非常にうまく機能します http://sourceforge.net/projects/texttablefmt/ 。 Apacheもライセンスされています。

1

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);
0
user2600734

正しいメソッドで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

0
Maciej Cygan

[〜#〜] tuiawt [〜#〜] を使用できます [〜#〜] awt [〜#〜] コンソールウィンドウのコンポーネント。ただし、 リスト または テーブル をサポートしているようには見えませんが、出発点になる場合があります。

0
hd1