public class hiTextTable extends Object
文字列編集機能を集めたクラスです。殆どの機能はstatic関数として用意されます。
少し機能を高めたトークン分割や、文字列とデータ構造の変換などの機能があります。
対象とするのは単純文字列と、ArrayList<String[]>の形をとる行カラムデータです。
幾つかのメソッドではArrayList<String[]>の代わりにList<String[]が引数となっています。もちろん
呼び出す側はArrayList<String[]>を用いることができます。
| getStringList | デリミタで行カラム区切りされた文字列からデータを生成する | 
| toString | デリミタで行カラム区切りされた文字列を生成する | 
| toTable | 縦棒(|)とハイフン(-)で罫線表示された文字列を得る | 
| toHtmlTable | HTMLの<table>を得る | 
| find | 指定値を持つ行を抽出する | 
| reOrder | 行の並べ替えを行う | 
| replace | 内容の置き換えを行う | 
処理の幾つかは歴史的理由によりhiUクラスにもAPIを用意してあります。
hiPropertyクラスも定義文字列解析をこのクラスの機能を使って実行しています。
旧版との互換性に関し:
JSONの取り扱いはhiJSONおよびhiJSONutlに移しました。
hiText.parseJson(...) ⇒ hiJSON.parse(...); hiText.jsonToMatrixDict(...) ⇒ hiJSONutl.toMatrixDict(...) hiText.objConv(...) ⇒ hiJSONutl.objConv(...)
| 修飾子とタイプ | クラスと説明 | 
|---|---|
| static interface  | hiTextTable.specialCell_intf | 
| コンストラクタと説明 | 
|---|
| hiTextTable() | 
| 修飾子とタイプ | メソッドと説明 | 
|---|---|
| static ArrayList<String[]> | find(List<String[]> rows_,
    int[] colIndxs_,
    String[] colVals_)文字列の配列のリストから指定値をもつ配列を抽出する. | 
| static ArrayList<String[]> | find(List<String[]> rows_,
    int[] colIndxs_,
    String[] colVals_,
    long option_)指定カラムが指定値である行の並びを得る. | 
| static ArrayList<String[]> | find(List<String[]> rows_,
    String[] colNames_,
    String[] colVals_)文字列の配列のリストから指定値をもつ配列を抽出する. | 
| static ArrayList<String[]> | getStringLists(ArrayList<String> lines_,
              String dlmt_)デリミタでカラムに分けられる文字列のリストを分解しArrayList<String[]>を得る. | 
| static ArrayList<String[]> | getStringLists(ArrayList<String> lines_,
              String dlmt_,
              long option_)文字列を行カラムに分割する(オプション指定付き). | 
| static ArrayList<String[]> | getStringLists(String text_,
              String dlmt_)デリミタでカラムと行に分けられる文字列を分解しArrayList<String[]>を得る. | 
| static ArrayList<String[]> | getStringLists(String text_,
              String dlmt_,
              long option_)文字列を行カラムに分割する(オプション指定付き). | 
| static ArrayList<String[]> | invert(List<String[]> matrix_)ArrayList<String[]<のカラムと行を入れ替える. | 
| static ArrayList<String[]> | invert(List<String[]> matrix_,
      long option_)ArrayList<String[]>のカラムと行を入れ替える. | 
| static ArrayList<String[]> | reOrder(ArrayList<String[]> data_,
       String[] order_)先頭行が名称並びである行カラムのカラム並べ替え. | 
| static ArrayList<String[]> | reOrder(ArrayList<String[]> data_,
       String[] order_,
       long option_,
       StringBuilder info_)先頭行が名称並びである行カラムのカラム並べ替え. | 
| static ArrayList<String[]> | replace(ArrayList<String[]> rows_,
       int[] colIndxs_,
       String[] row_)リスト内の指定値を持つ行を置き換える. | 
| static ArrayList<String[]> | replace(ArrayList<String[]> rows_,
       int[] colIndxs_,
       String[] row_,
       long option_)リスト内の指定値を持つ行を置き換える(先頭も対象にできる). | 
| static ArrayList<String[]> | replace(ArrayList<String[]> rows_,
       String[] colNames_,
       String[] row_)リスト内の指定値を持つ行を置き換える. | 
| void | reset()取り込み状態をリセットする. | 
| String | scale(int n_) | 
| static String[] | tabAlign(String[] text_,
        int tab_)複数行でタブによる縦整列を行う. | 
| static String | toHtmlTable(ArrayList<String[]> data_,
           int[] columnSizes_,
           int dataAreaHeight_,
           String tableClass_) | 
| static String | toHtmlTable(ArrayList<String[]> data_,
           int[] columnSizes_,
           int dataAreaHeight_,
           String tableClass_,
           HashMap<String,String> option_) | 
| static String | toHtmlTable(ArrayList<String[]> data_,
           int[] columnSizes_,
           int dataAreaHeight_,
           String tableClass_,
           hiTextTable.specialCell_intf specialCell_) | 
| static String | toHtmlTable(ArrayList<String[]> data_,
           int[] columnSizes_,
           int dataAreaHeight_,
           String tableClass_,
           hiTextTable.specialCell_intf specialCell_,
           HashMap<String,String> option_) | 
| static String | toHtmlTable(List<String[]> data_,
           HashMap<String,String> option_)行カラム並びをHTMLのテーブル文にする(試験中). | 
| static String | toString(List<String[]> rows_,
        String dlmt_)Stringの配列のリストからデリミタ区切りの文字列を生成する. | 
| static String | toString(List<String[]> rows_,
        String dlmt_,
        long option_)Stringの配列のリストからデリミタ区切りの文字列を生成する(オプション付き). | 
| static String | toString(String[] row_,
        String dlmt_)Stringの配列からデリミタで区切られるStringを得る. | 
| static String | toString(String[] row_,
        String dlmt_,
        long option_)Stringの配列からデリミタ区切りの文字列を生成する(オプション付き). | 
| static String | toTable(List<String[]> data_)文字による罫線付テーブル表示を得る. | 
| static String | toTable(List<String[]> data_,
       long option_)文字による罫線付テーブル文字列を得る. | 
| static String | toTable(List<String[]> data_,
       String[] align_,
       long option_)文字による罫線付テーブル表示を得る. | 
| static ArrayList<String> | trimComment(List<String> lines_)複数行の文字列からコメント分を削除する. | 
| static String[] | trimComment(String[] lines_)文字列からコメント分を削除する. | 
| static String | tt(String text_,
  String additional_style_,
  int[] padding_) | 
public String keep
public static final String HTML_table_class_nm
hiText.toHtmlTable()のtableのクラスオプションキー."table_class"public static final String HTML_table_style
hiText.toHtmlTable()のtableの属性デフォルト.
<table>のデフォルト属性です。次の値を持っています。
border:1px solid black;border-collapse:collapse;line-height:100%;font-size:11.5pt;
別の属性を指定したい場合は、toHtmlTable()のオプション引数辞書の"table_style"にセットます。
"table_style"はhiText.HTML_table_style_nmに定義があります。
    HashMap<String,String> option=new HashMap<String,String>();
    option.put(HTML_table_style_nm
              ,"border-collapse:collapse;line-height:100%;font-size:10pt;");
               // 枠線なし、文字サイズは10pt
    String html= hiText.toHtmlTable(data,option);
public static final String HTML_table_style_nm
hiText.toHtmlTable()のオプションキー:"table_style".public static final String HTML_thead_style
toHtmlTable()のtheadの属性デフォルト.
<thead>のデフォルト属性です。空です。
別の属性を指定したい場合は、toHtmlTable()のオプション引数辞書の"thead_style"にセットます。
"table_style"はhiText.HTML_thead_style_nmに定義があります。
2013年4月現在<thead>の属性の取り扱いはブラウザによりバラバラです。
public static final String HTML_thead_style_nm
hiText.toHtmlTable()のオプションキー:"thead_style".public static final String HTML_thead_tr_style
toHtmlTable()のtheadの内のtr属性デフォルト.
<thead>のデフォルト属性です。次の値を持っています。
border:1px solid black;background-color:#FFBB88;vertical-align:top;text-align:left;
別の属性を指定したい場合は、toHtmlTable()のオプション引数辞書の"thead_tr_style"にセットます。
"table_style"はhiText.HTML_thead_tr_style_nmに定義があります。
2013年4月現在<thead>の属性の取り扱いはブラウザによりバラバラです。
public static final String HTML_thead_tr_style_nm
hiText.toHtmlTable()のオプションキー:"thead_tr_style".public static final String HTML_th_style_nm
hiText.toHtmlTable()のオプションキー:"th_style".public static final String HTML_th_styleV
toHtmlTable()のhtead内tdの属性(縦書き).
<thead>内に置く<td>の属性です。縦書き指定になっており、次の値を持ちます。
border:1px solid black;writing-mode:tb-rl;
この属性を指定したい場合は、toHtmlTable()のオプション引数辞書の"thead_th_style"にセットます。
"thead_th_style"はhiText.HTML_th_style_nmに定義があります。
    HashMap<String,String> option=new HashMap<String,String>();
    option.put(HTML_th_style_nm
              ,hiText.HTML_th_style);
    String html= hiText.toHtmlTable(data,option);
writing-mode属性は現時点では<td>内に記述したもののみ有効です。<tr>では無効です。また 2013年4月現在IEでのみ有効となっています。
public static final String HTML_tbody_style
hiText.toHtmlTable()のtbodyの属性デフォルト.
<table>のデフォルト属性です。次の値を持っています。
vertical-align:top;text-align:left;
別の属性を指定したい場合は、toHtmlTable()のオプション引数辞書の"tbody_style"にセットます。
"table_style"はhiText.HTML_tbody_style_nmに定義があります。
    HashMap<String,String> option=new HashMap<String,String>();
    option.put(HTML_tbody_style_nm
              ,"vertical-align:center;");
               // 枠線なし、文字サイズは10pt
    String html= hiText.toHtmlTable(data,option);
public static final String HTML_tbody_style_nm
hiText.toHtmlTable()のオプションキー:"tbody_style".public static final String HTML_odd_tr_style
hiText.toHtmlTable()のtbodyの奇数行tr属性デフォルト.
<tbody>内の奇数行<tr>のデフォルト属性です。次の値を持っています。
background-color:#C8C8E8;
別の属性を指定したい場合は、toHtmlTable()のオプション引数辞書の"odd_tr"にセットます。
"table_style"はhiText.HTML_odd_tr_style_nmに定義があります。
public static final String HTML_odd_tr_style_nm
hiText.toHtmlTable()のオプションキー:"odd_tr_style".public static final String HTML_evn_tr_style
hiText.toHtmlTable()のtbodyの偶数行tr属性デフォルト.
<tbody>内の偶数行<tr>のデフォルト属性です。次の値を持っています。
background-color:#E8E8FF;
別の属性を指定したい場合は、toHtmlTable()のオプション引数辞書の"evn_tr"にセットます。
"table_style"はhiText.HTML_odd_tr_style_nmに定義があります。
public static final String HTML_evn_tr_style_nm
hiText.toHtmlTable()のオプションキー:"evn_tr_style".public static final String HTML_odd_td_style
hiText.toHtmlTable()のtbodyの奇数行td属性デフォルト.
<tbody>内の奇数行<td>のデフォルト属性です。次の値を持っています。
border:1px solid black;
別の属性を指定したい場合は、toHtmlTable()のオプション引数辞書の"odd_td"にセットます。
"table_style"はhiText.HTML_odd_td_style_nmに定義があります。
public static final String HTML_odd_td_style_nm
hiText.toHtmlTable()のオプションキー:"odd_td_style".public static final String HTML_evn_td_style
hiText.toHtmlTable()のtbodyの偶数行td属性デフォルト.
<tbody>内の偶数行<td>のデフォルト属性です。次の値を持っています。
border:1px solid black;
別の属性を指定したい場合は、toHtmlTable()のオプション引数辞書の"evn_td"にセットます。
"table_style"はhiText.HTML_evn_td_style_nmに定義があります。
public static final String HTML_evn_td_style_nm
hiText.toHtmlTable()のオプションキー:"evn_td_style".public static final String HTML_eol
hiText.toHtmlTable()の改行デフォルト.public static final String HTML_eol_nm
hiText.toHtmlTable()のオプションキー:"eol".public static final long SPLIT_OPTION
getStringLists(ArrayList,String),
getStringLists(String,String)で採用される文字列分割オプションです。
次の値を持ちます。
   (  hiU.CHECK_COMMENT   // コメントをチェックし、対象外とする
    | hiU.CHECK_QUOTE     // 引用符内のデリミタをデリミタとしない
    | hiU.OMIT_LAST_SPACE // 文字列がデリミタで終了する場合最後にnullを付加しない
    | hiU.AS_NULL        )// 空文字列の代わりにnullを設定する
public void reset()
public static ArrayList<String> trimComment(List<String> lines_)
C言語形式のコメントを削除します。
1要素が1行となります。要素中の改行コードは見ません
コメントは/*から*/までと//から改行までです。
ネストはしません。
互いに相手をコメントアウトします。
引用符の中の/*、*/、//はコメントとなりません。
シングルクオート、ダブルクオートとも引用符扱いをします。
引用符の中では逆スラッシュはエスケープ扱いとなります。
lines_ - 複数行の文字列(リスト1要素が1行)public static String[] trimComment(String[] lines_)
C言語形式のコメントを削除します。
1要素が1行となります。要素中の改行コードは見ません
コメントは/*から*/までと//から改行までです。
ネストはしません。
互いに相手をコメントアウトします。
引用符の中の/*、*/、//はコメントとなりません。
シングルクオート、ダブルクオートとも引用符扱いをします。
引用符の中では逆スラッシュはエスケープ扱いとなります。
lines_ - 複数行の文字列(リスト1要素が1行)public static ArrayList<String[]> find(List<String[]> rows_, String[] colNames_, String[] colVals_)
 String[] names={"a","b","c","d"};
 String[] r1   ={"2","3","5","4"};
 String[] r2   ={"3","7","1","6"};
 String[] r3   ={"4","3","5","9"};
 String[] r4   ={"5","2","1","4"};
 ArrayList<String[]> a=new ArrayList<String[]>();
 a.add(names);a.add(r1);a.add(r2);a.add(r3);a.add(r4);
 String[] colNames={"b","c"};
 String[] colVals ={"3","5"};
 ArrayList<String[]> rows= hiText.find(a,colNames,colVals);
 // [ [a,b,c,d],[2,3,5,2],[4,3,5,9] ] が得られる
rows_ - 対象(先頭は名前行)colNames_ - チェックするカラム名の並びcolVals_ - 値の並びpublic static ArrayList<String[]> find(List<String[]> rows_, int[] colIndxs_, String[] colVals_)
find(List,int[],String[],long)で
 オプションhiU.CHECK_TOPを指定します。
 String[] names={"a","b","c","d"};
 String[] r1   ={"2","3","5","4"};
 String[] r2   ={"3","7","1","6"};
 String[] r3   ={"4","3","5","9"};
 String[] r4   ={"5","2","1","4"};
 ArrayList<String[]> a=new ArrayList<String[]>();
 a.add(names);a.add(r1);a.add(r2);a.add(r3);a.add(r4);
 int[]    colIndxs={1,2};
 String[] colVals ={"3","5"};
 ArrayList<String[]> rows= hiText.find(a,colIndxs,colVals);
 // [ [a,b,c,d],[2,3,5,2],[4,3,5,9] ] が得られる
rows_ - 対象行(先頭はチェックせず抽出する)colIndxs_ - チェックするカラムインデックスの並びcolVals_ - 値の並びpublic static ArrayList<String[]> find(List<String[]> rows_, int[] colIndxs_, String[] colVals_, long option_)
find(List,int[],String[])
 にオプション指定を可能としたものです。hiU.CHECK_TOPを指定すると、
先頭もチェック対象となります。
 String[] names={"1","0","9","8"};
 String[] r1   ={"2","3","5","4"};
 String[] r2   ={"3","7","1","6"};
 String[] r3   ={"4","3","5","9"};
 String[] r4   ={"5","2","1","4"};
 ArrayList<String[]> a=new ArrayList<String[]>();
 a.add(names);a.add(r1);a.add(r2);a.add(r3);a.add(r4);
 int[]    colIndxs={1,2};
 String[] colVals ={"3","5"};
 ArrayList<String[]> rows= hiText.find(a,colIndxs,colVals,hiU.CHECK_TOP);
 // [ [2,3,5,2],[4,3,5,9] ] が得られる;先頭がマッチする場合は先頭も入る
rows_ - 対象行(hiU.CHECK_TOPを付ければ
先頭もチェック対象)colIndxs_ - チェックするカラムインデックスの並びcolVals_ - 値の並びoption_ - オプションpublic static ArrayList<String[]> replace(ArrayList<String[]> rows_, String[] colNames_, String[] row_)
指定カラムの値が一致する行を置き換えます。 先頭行から探して一致する行があれば1行のみ置き換えます。 置き換えがあった場合新しいリストが返ります。置き換えが無かった 場合は引数のリストがそのまま返ります。
rows_ - このリストをコピーして内容の置き換えを行うcolNames_ - チェックするカラム名row_ - 一致する場合このデータで行を置き換えるpublic static ArrayList<String[]> replace(ArrayList<String[]> rows_, int[] colIndxs_, String[] row_)
 指定カラムの値が一致する行を置き換えます。
 先頭行から探して一致する行があれば1行のみ置き換えます。
 置き換えがあった場合新しいリストが返ります。置き換えが無かった
 場合は引数のリストがそのまま返ります。
rows_ - このリストをコピーして内容の置き換えを行うcolIndxs_ - チェックするカラムrow_ - 一致する場合このデータで行を置き換えるpublic static ArrayList<String[]> replace(ArrayList<String[]> rows_, int[] colIndxs_, String[] row_, long option_)
 指定カラムの値が一致する行を置き換えます。
 先頭行から探して一致する行があれば1行のみ置き換えます。
 置き換えがあった場合新しいリストが返ります。置き換えが無かった
 場合は引数のリストがそのまま返ります。
 optionは
 ・hiU.CHECK_TOP:先頭も対象とする。
です。
rows_ - このリストをコピーして内容の置き換えを行うcolIndxs_ - チェックするカラムrow_ - 一致する場合このデータで行を置き換えるoption_ - hiU.CHECK_TOPを指定すると先頭もチェック対象public static ArrayList<String[]> invert(List<String[]> matrix_, long option_)
ArrayList<String[]>のカラムと行を入れ替えます。
結果のサイズは縦横の最大値をとったサイズものとなります。
元データで短い行がある場合はoption_指定により空白文字列またはnullが入ります。
matrix_ - 元のデータoption_ - hiU.AS_NULL:データ無しセルにnullを入れる。。public static ArrayList<String[]> invert(List<String[]> matrix_)
ArrayList<String[]<のカラムと行を入れ替えます。
結果のサイズは縦横の最大値をとったサイズものとなります。
元データで短い行がある場合は対応値として長さ0の文字列が入ります。
matrix_ - 元のデータpublic static String toString(List<String[]> rows_, String dlmt_)
ArrayList<String[]<からStringを生成します。区切り文字の指定ができます。 行区切りには指定文字に加えて改行コードが付加されます。
 String[] names={"a","b","c","d"};
 String[] r1   ={"2","3","5","4"};
 String[] r2   ={"3","7","1","6"};
 ArrayList<String[]> a=new ArrayList<String[]>();
 a.add(names);a.add(r1);a.add(r2);
 String s=hiText.toString(a,",;"); // カンマ、セミコロンが区切り
 System.out.print(s);
 ==================
 a,b,c,d;
 2,3,5,4;
 3,7,1,6;
次の文字を含む場合引用符で囲まれます。
囲まれます。文字列がシングルクオートを含まない場合 はシングルクオートで囲まれます。文字列がシングルクオート を含みダブルクオートを含まない場合はダブルクオートで 囲まれます。シングルクオートとダブルクオートを含む場合
 String[] r1= {"a","b","c"};
 String[] r2= {"aa","bb  bb"," cc "}; // 空白がある
 String[] r3= {"aaa","b;b","c,c;"};   // 区切り文字がある
 String[] r4= {"aaaa","//b","c/*d"};  // 特殊文字がある
 String[] r5= {"aaaaa","b'b","c\"\c"};// 引用符がある
 String[] r6= {"aaaaaa","b'\"b"}:     // シングルダブル引用符がある
 ArrayList<String[]> a=new ArrayList<String[]>();
 a.add(names);a.add(r1);a.add(r2);a.add(r3);
 String s=hiText.toString(a,",;/"); // カンマ、セミコロンが区切り、/が特殊文字
 System.out.print(s);
 ===
 a,b,c;
 aaa,'bb  bb',' cc ';
 'a,a','b;b','c,c;';
 'a/*','*/b','c//';
 String[] names={"a","b","c"};
 String[] r1   ={"aaa",null","ccc"};
 ArrayList<String[]> a=new ArrayList<String[]>();
 a.add(names);a.add(r1);
 String s=hiText.toString(a,"\t\n"); // タブ、改行が区切り
 System.out.print(s);
 ===
 'a' 'b' 'c'
 'aaa' '' 'ccc'
rows_ - 対象dlmt_ - カラム区切り、行区切りの文字(2文字で指定)public static String toString(List<String[]> rows_, String dlmt_, long option_)
toString(List,String)にオプション指定を付けたものです。
指定できるオプションはhiU.AS_NULLです。
hiU.AS_NULLを指定するとnull要素
「null」表示します。デリミタが空白文字の場合シングルクオートは付加されません。
 String[] names={"a","b","c"};
 String[] r1   ={"aaa",null,"ccc"};
 ArrayList<String[]> a=new ArrayList<String[]>();
 a.add(names);a.add(r1);
 String s =hiText.toString(a,",;");
 System.out.print(s); a,b,c;aaa,,ccc;
 String s2=hiText.toString(a,",;",hiU.AS_NULL);
 System.out.print(s2); a,b,c;aaa,null,ccc;
 String s3=hiText.toString(a,"\t;");
 System.out.print(s3); 'a' 'b' 'c';'aaa' '' 'ccc';
 String s4=hiText.toString(a,"\t;",hiU.AS_NULL);
 System.out.print(s4); 'a' 'b' 'c';'aaa' null 'ccc';
rows_ - 対象dlmt_ - カラム区切り、行区切りの文字(2文字で指定:3文字目以降は特殊文字)option_ - オプションpublic static String toString(String[] row_, String dlmt_)
Stringの配列の各要素をデリミタでつないだStringを得ます。 {link #toString(ArrayList<String[]>,String)}の1行相当のものです。 付加されるデリミタはカラム区切りの1個ですが、行区切りと内容が 干渉することを防ぐため行区切りも指定できます。行区切りを 考えなくてよい場合は一文字のみ指定してください。
row_ - 対象dlmt_ - カラム区切り、行区切りの文字(2文字または1文字で指定)public static String toString(String[] row_, String dlmt_, long option_)
toString(String[],String)にオプション指定を付けたものです。
オプションは次のものです。
| hiU.AS_null_DISP | nullをnullという文字列で表示する。無指定時は空となる | ||
| hiU.NO_QUOTE | 特殊文字を含んでいてもクオートで囲まない | 
row_ - 対象dlmt_ - カラム区切り、行区切りの文字(2文字で指定)option_ - オプションpublic static ArrayList<String[]> reOrder(ArrayList<String[]> data_, String[] order_, long option_, StringBuilder info_)
先頭が名称並びであるArrayList<String[]>の内容を、指定の名称並びに並べ替えます。 option_には次の指定ができます。
| hiU.AS_NULL | 新規カラムデータとしてnullが設定されます。 | 
data_ - 変更を加えたい行カラムorder_ - 期待する名称並び.nullまたは空の場合並べ替えは行いません。option_ - を指定すると
              新規カラムデータとしてnullが設定されます。無指定時は空文字列がセットされます。hiU.KEEP_NULLを指定すると
              元データがnullであっても空文字列であってもそのまま設定します。無指定時は
              新規カラムデータの取り扱いと同じになります。hiU.FORCE を指定すると
       カラム並びが同じでも新しいデータを生成します。info_ - カラム名の過不足情報。不要の場合はnullとする。public static ArrayList<String[]> reOrder(ArrayList<String[]> data_, String[] order_)
先頭が名称並びであるArrayList<String[]>の内容を、指定の名称並びに並べ替えます。
hiText.reOrder(data_,order,option_,info)
を次のように呼び出すのと同じです。対応カラムのないカラムには長さ0の文字列がセットされます。
    hiText.reOrder(data_,order_,hiU.NO_OPTION,null);
data_ - 変更を加えたい行カラムorder_ - 期待する名称並びpublic static String toHtmlTable(List<String[]> data_, HashMap<String,String> option_)
ArrayList<String[]>形式のデータをHTMLの<table>文に変換します。 例えば次の様なコードでは
   String[] names={"A","B","C","D","E","F","Gxx"};
   String[] r1   ={"a1","b1","c1","d1","e1","f1","g1"};
   String[] r2   ={"a2","b2","","d2","e2","f2222","g2"};
   String[] r3   ={"a3","b3","c333333","","","f3","g3"};
   String[] r4   ={"","","b4","","","",""};
   String[] r5   ={"a555555","b5","c5","d5","","f5"};
   ArrayList<String[]> a=new ArrayList<String[]>();
   a.add(names);a.add(r1);a.add(r2);a.add(r3);a.add(r4);a.add(r5);
   String htmlText= hiText.toHtmlTable(a,null);
次のようなテーブル用の文字列が生成されます。
| A | B | C | D | E | F | Gxx | 
| a1 | b1 | c1 | d1 | e1 | f1 | g1 | 
| a2 | b2 | d2 | e2 | f2222 | g2 | |
| a3 | b3 | c333333 | f3 | g3 | ||
| b4 | ||||||
| a555555 | b5 | c5 | d5 | f5 | 
<table style='border:1px solid black;border-collapse:collapse;line-height:100%;font-size:11.5pt;'> <thead style=''> <tr style='border:1px solid black;background-color:#FFBB88;vertical-align:top;text-align:left;'> <td style='border:1px solid black;'>A</td> <td style='border:1px solid black;'>B</td> <td style='border:1px solid black;'>C</td> <td style='border:1px solid black;'>D</td> <td style='border:1px solid black;'>E</td> <td style='border:1px solid black;'>F</td> <td style='border:1px solid black;'>Gxx</td> </tr> </thead> <tbody style='vertical-align:top;text-align:left;'> <tr style='background-color:#C8C8E8;'> <td style='border:1px solid black;'>a1</td> <td style='border:1px solid black;'>b1</td> <td style='border:1px solid black;'>c1</td> <td style='border:1px solid black;'>d1</td> <td style='border:1px solid black;'>e1</td> <td style='border:1px solid black;'>f1</td> <td style='border:1px solid black;'>g1</td> </tr> <tr style='background-color:#E8E8FF;'> <td style='border:1px solid black;'>a2</td> <td style='border:1px solid black;'>b2</td> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'>d2</td> <td style='border:1px solid black;'>e2</td> <td style='border:1px solid black;'>f2222</td> <td style='border:1px solid black;'>g2</td> </tr> <tr style='background-color:#C8C8E8;'> <td style='border:1px solid black;'>a3</td> <td style='border:1px solid black;'>b3</td> <td style='border:1px solid black;'>c333333</td> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'>f3</td> <td style='border:1px solid black;'>g3</td> </tr> <tr style='background-color:#E8E8FF;'> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'>b4</td> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'> </td><td style='border:1px solid black;'> </td></tr> <tr style='background-color:#C8C8E8;'> <td style='border:1px solid black;'>a555555</td> <td style='border:1px solid black;'>b5</td> <td style='border:1px solid black;'>c5</td> <td style='border:1px solid black;'>d5</td ><td style='border:1px solid black;'></td> <td style='border:1px solid black;'>f5</td> <td style='border:1px solid black;'></td></tr> </tbody> </table>
オプション指定でタグ別に属性を変更することができます。
HashMap<String,String> opt=new HashMap<String,String>(); opt.put(hiText.HTML_th_style_nm// THEADのTH要素 ,hiText.HTML_th_styleV); // 縦書き opt.put(hiText.HTML_tbody_style_nm// TBODY ,"vertical-align:top;text-align:right;"); // 右寄せ String htmlText1= hiText.toHtmlTable(a,opt);
次の表示用文字列が得られます。(縦書きは現時点2013/4で、IEのみ対応しています。他のブラウザで見ると 縦書きにはなりません。IEでも場合によってはセルサイズが揃わない場合があります)
| A | B | C | D | E | F | Gxx | 
| a1 | b1 | c1 | d1 | e1 | f1 | g1 | 
| a2 | b2 | d2 | e2 | f2222 | g2 | |
| a3 | b3 | c333333 | f3 | g3 | ||
| b4 | ||||||
| a555555 | b5 | c5 | d5 | f5 | 
<table style='border:1px solid black;border-collapse:collapse;line-height:100%;font-size:11.5pt;'> <thead style=''> <tr style='border:1px solid black;background-color:#FFBB88;vertical-align:top;text-align:left;'> <td style='border:1px solid black;writing-mode:tb-rl;'>A</td> <td style='border:1px solid black;writing-mode:tb-rl;'>B</td> <td style='border:1px solid black;writing-mode:tb-rl;'>C</td> <td style='border:1px solid black;writing-mode:tb-rl;'>D</td> <td style='border:1px solid black;writing-mode:tb-rl;'>E</td> <td style='border:1px solid black;writing-mode:tb-rl;'>F</td> <td style='border:1px solid black;writing-mode:tb-rl;'>Gxx</td> </tr> </thead> <tbody style='vertical-align:top;text-align:right;'> <tr style='background-color:#C8C8E8;'> <td style='border:1px solid black;'>a1</td> <td style='border:1px solid black;'>b1</td> <td style='border:1px solid black;'>c1</td> <td style='border:1px solid black;'>d1</td> <td style='border:1px solid black;'>e1</td> <td style='border:1px solid black;'>f1</td> <td style='border:1px solid black;'>g1</td> </tr> <tr style='background-color:#E8E8FF;'> <td style='border:1px solid black;'>a2</td> <td style='border:1px solid black;'>b2</td> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'>d2</td> <td style='border:1px solid black;'>e2</td> <td style='border:1px solid black;'>f2222</td> <td style='border:1px solid black;'>g2</td> </tr> <tr style='background-color:#C8C8E8;'> <td style='border:1px solid black;'>a3</td> <td style='border:1px solid black;'>b3</td> <td style='border:1px solid black;'>c333333</td> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'>f3</td> <td style='border:1px solid black;'>g3</td> </tr> <tr style='background-color:#E8E8FF;'> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'>b4</td> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'></td> </tr> <tr style='background-color:#C8C8E8;'> <td style='border:1px solid black;'>a555555</td> <td style='border:1px solid black;'>b5</td> <td style='border:1px solid black;'>c5</td> <td style='border:1px solid black;'>d5</td> <td style='border:1px solid black;'></td> <td style='border:1px solid black;'>f5</td> <td style='border:1px solid black;'></td> </tr> </tbody> </table>
デフォルトでは<table>他のタグにstyle属性を付けていますが、tableのclass名を
指定すると、<table>に「class=指定クラス」付加されるだけで、styleは一切付けない
記述を得ることができます。
次のcss記述があるとして、
   <style type='text/css'>
      table.tt {border-collapse:collapse;line-height:100%;font-size:11.5pt;}
      table.tt th {border:1px solid black;
                   background-color:#FFBB88;vertical-align:top;text-align:left;}
      table.tt tbody {vertical-align:top;text-align:left;text-align:left;}
      table.tt tbody tr:nth-child(odd)  {background-color:#C8C8E8;}
      table.tt tbody tr:nth-child(even) {background-color:#E8E8FF;}
      table.tt td {border:1px solid black;}
   </style>
次のようにクラス指定オプションを付けると
   HashMap<String,String> opt2=new HashMap<String,String>();
   opt2.put(hiText.HTML_table_class_nm
           ,"tt");
   String htmlText2= hiText.toHtmlTable(a,opt2);
つぎの出力が得られます。
| A | B | C | D | E | F | Gxx | 
|---|---|---|---|---|---|---|
| a1 | b1 | c1 | d1 | e1 | f1 | g1 | 
| a2 | b2 | d2 | e2 | f2222 | g2 | |
| a3 | b3 | c333333 | f3 | g3 | ||
| b4 | ||||||
| a555555 | b5 | c5 | d5 | f5 | 
<table class='tt'> <thead> <tr> <th>A</th> <th>B</th> <th>C</th> <th>D</th> <th>E</th> <th>F</th> <th>Gxx</th> </tr> </thead> <tbody> <tr> <td>a1</td><td>b1</td><td>c1</td> <td>d1</td><td>e1</td><td>f1</td> <td>g1</td></tr> <tr> <td>a2</td><td>b2</td><td></td> <td>d2</td><td>e2</td><td>f2222</td><td>g2</td></tr> <tr> <td>a3</td><td>b3</td><td>c333333</td> <td></td><td></td><td>f3</td><td>g3</td></tr> <tr> <td></td><td></td><td>b4</td><td> </td><td></td><td></td><td></td></tr> <tr> <td>a555555</td><td>b5</td><td>c5</td> <td>d5</td><td></td><td>f5</td><td></td></tr> </tbody> </table>
次のようにクラス指定オプションと一緒に各タグstyle属性指定を行うと、そのタグにのみ style属性が付加されます。
HashMap<String,String> opt3=new HashMap<String,String>(); opt3.put(hiText.HTML_table_class_nm,"tt"); opt3.put(hiText.HTML_odd_tr_style_nm// 奇数行のstyle ,"background-color:#FAFFFF;"); opt3.put(hiText.HTML_evn_tr_style_nm// 偶数行のstyle ,"background-color:#E5F5FF;"); String htmlText3= hiText.toHtmlTable(a,opt3);
次の結果が得られます。
| A | B | C | D | E | F | Gxx | 
|---|---|---|---|---|---|---|
| a1 | b1 | c1 | d1 | e1 | f1 | g1 | 
| a2 | b2 | d2 | e2 | f2222 | g2 | |
| a3 | b3 | c333333 | f3 | g3 | ||
| b4 | ||||||
| a555555 | b5 | c5 | d5 | f5 | 
<table class='tt'> <thead> <tr> <th>A</th> <th>B</th> <th>C</th> <th>D</th> <th>E</th> <th>F</th> <th>Gxx</th> </tr> </thead> <tbody> <tr style='background-color:#FAFFFF;'> <td>a1</td><td>b1</td><td>c1</td><td>d1</td> <td>e1</td><td>f1</td><td>g1</td></tr> <tr style='background-color:#E5F5FF;'> <td>a2</td><td>b2</td><td></td><td>d2</td> <td>e2</td><td>f2222</td><td>g2</td></tr> <tr style='background-color:#FAFFFF;'> <td>a3</td><td>b3</td><td>c333333</td><td> </td><td></td><td>f3</td><td>g3</td></tr> <tr style='background-color:#E5F5FF;'> <td></td><td></td><td>b4</td><td></td> <td></td><td></td><td></td></tr> <tr style='background-color:#FAFFFF;'> <td>a555555</td><td>b5</td><td>c5</td> <td>d5</td><td></td><td>f5</td><td></td></tr> </body> </table>
オプション指定には次のものがあります。
| 指定定数 | 指定文字列 | デフォルト | 説明 | 
|---|---|---|---|
| HTML_table_style_nm | table_style | border:1px solid black;border-collapse:collapse;line-height:100%;font-size:11.5pt; | table属性 | 
| HTML_thead_style_nm | thead_style | thead属性 | |
| HTML_thead_tr_style_nm | thead_tr_style | border:1px solid black;background-color:#FFBB88;vertical-align:top;text-align:left; | thead内のtr属性 | 
| HTML_th_style_nm | th_style | border:1px solid black; | th属性 | 
| HTML_tbody_style_nm | tbody_style | vertical-align:top;text-align:left; | tbody属性 | 
| HTML_odd_tr_style_nm | odd_tr_style | background-color:#C8C8E8; | 奇数数行tr属性 | 
| HTML_evn_tr_style_nm | evn_tr_style | background-color:#E8E8FF; | 偶数数行tr属性 | 
| HTML_odd_td_style_nm | odd_td_style | border:1px solid black; | 奇数数行td属性 | 
| HTML_evn_td_style_nm | evn_td_style | border:1px solid black; | 偶数行td属性 | 
| HTML_eol_nm | eol | \n | 各行に付加する改行コード | 
data_ - 表示すべきデータoption_ - 表示属性に関するオプション指定(null指定可)public static String toHtmlTable(ArrayList<String[]> data_, int[] columnSizes_, int dataAreaHeight_, String tableClass_, hiTextTable.specialCell_intf specialCell_, HashMap<String,String> option_)
public static String toHtmlTable(ArrayList<String[]> data_, int[] columnSizes_, int dataAreaHeight_, String tableClass_)
public static String toHtmlTable(ArrayList<String[]> data_, int[] columnSizes_, int dataAreaHeight_, String tableClass_, hiTextTable.specialCell_intf specialCell_)
public static String toHtmlTable(ArrayList<String[]> data_, int[] columnSizes_, int dataAreaHeight_, String tableClass_, HashMap<String,String> option_)
public static String toTable(List<String[]> data_, String[] align_, long option_)
toTable(List,long)
にカラム毎に左寄せ、中央配置、右寄せ設定を付加したものです。
位置指定はStringの配列で行います。大文字小文字は無視されます
| "L" | : | 左寄せ | 
| "C" | : | 中央置き | 
| "R" | : | 右寄せ | 
二文字指定すると、第1文字が先頭行の配置指定、第2文字が2行目 以降の配置指定となります。
例えば、
   String data[][]={
      {"商品ID","商品名","商品分類","販売単価","仕入単価","登録日"}
     ,{"0008","包丁","キッチン用品","40000","600","2014-07-15"}
     ,{"0009","ステイプラー","事務用品","20","320",null}
     ,{"0010","Tシャツ","衣服","100","1500","2014-07-16"}
     ,{"0011","椅子","什器","5000","3400",null}};
   List<String[]> tbl=Arrays.asList(data);
   String[] align={"R","C","L","r","c","l"};
   System.out.print("==== R,C,L,r,c,l");
   System.out.print(hiText.toTable(tbl
                                ,align
                                ,hiU.WITH_NAME|hiU.AS_null_DISP));
   String[] align2={"RR","LC","CL","CR","LC","RL"};
   System.out.print("==== RR,LC,CL,CR,LC,RL");
   System.out.print(hiText.toTable(tbl
                                ,align2
                                ,hiU.WITH_NAME|hiU.AS_null_DISP));
で次の出力が得られます。
==== R,C,L,r,c,l 商品ID| 商品名 |商品分類 |販売単価|仕入単価|登録日 ------+------------+------------+--------+--------+---------- 0008| 包丁 |キッチン用品| 40000| 600 |2014-07-15 0009|ステイプラー|事務用品 | 20| 320 |null 0010| Tシャツ |衣服 | 100| 1500 |2014-07-16 0011| 椅子 |什器 | 5000| 3400 |null ==== RR,LC,CL,CR,LC,RL 商品ID|商品名 | 商品分類 |販売単価|仕入単価| 登録日 ------+------------+------------+--------+--------+---------- 0008| 包丁 |キッチン用品| 40000| 600 |2014-07-15 0009|ステイプラー|事務用品 | 20| 320 |null 0010| Tシャツ |衣服 | 100| 1500 |2014-07-16 0011| 椅子 |什器 | 5000| 3400 |null
data_ - 元の文字列align_ - 配置指定 L:左寄せ、R:右寄せ、C:中央置きoption_ - hiU.WITH_NAMEを付けると先頭行を第2行目の間に罫線が付きます。
               hiU.AS_null_DISPを付けるとnullポインタを"null"表示します。public static String toTable(List<String[]> data_, long option_)
List<String[]>形式に収められた行カラム情報を、-|+を罫線代わりに使った
簡易テーブル文字列を得ます。
全角、半角を判断した上で、半角空白を追加してカラム位置を揃えています。
例えば
   String data[][]={
      {"商品ID","商品名","商品分類","販売単価","仕入単価","登録日"}
     ,{"0008","包丁","キッチン用品","40000","600","2014-07-15"}
     ,{"0009","ステイプラー","事務用品","20","320",null}
     ,{"0010","Tシャツ","衣服","100","1500","2014-07-16"}
     ,{"0011","椅子","什器","5000","3400",null}};
   List<String[]> tbl=Arrays.asList(data);
   System.out.println("tbl="+hiU.str(tbl,hiU.WITH_INDENT));
   System.out.print("==== no option");
   System.out.println(hiText.toTable(tbl));
   System.out.print("==== hiU.WITH_NAME");
   System.out.println(hiText.toTable(tbl
                                ,hiU.WITH_NAME));
   System.out.print("==== hiU.AS_null_DISP");
   System.out.println(hiText.toTable(tbl
                                ,hiU.AS_null_DISP));
   System.out.print("==== hiU.WITH_NAME|hiU.AS_null_DISP");
   System.out.println(hiText.toTable(tbl
                                ,hiU.WITH_NAME|hiU.AS_null_DISP));
で次の表示が得られます。
tbl=[ [商品ID, 商品名, 商品分類, 販売単価, 仕入単価, 登録日] ,[0008, 包丁, キッチン用品, 40000, 600, 2014-07-15] ,[0009, ステイプラー, 事務用品, 20, 320, nuLL] ,[0010, Tシャツ, 衣服, 100, 1500, 2014-07-16] ,[0011, 椅子, 什器, 5000, 3400, nuLL]] ==== no option 商品ID|商品名 |商品分類 |販売単価|仕入単価|登録日 0008 |包丁 |キッチン用品|40000 |600 |2014-07-15 0009 |ステイプラー|事務用品 |20 |320 | 0010 |Tシャツ |衣服 |100 |1500 |2014-07-16 0011 |椅子 |什器 |5000 |3400 | ==== hiU.WITH_NAME 商品ID|商品名 |商品分類 |販売単価|仕入単価|登録日 ------+------------+------------+--------+--------+---------- 0008 |包丁 |キッチン用品|40000 |600 |2014-07-15 0009 |ステイプラー|事務用品 |20 |320 | 0010 |Tシャツ |衣服 |100 |1500 |2014-07-16 0011 |椅子 |什器 |5000 |3400 | ==== hiU.AS_null_DISP 商品ID|商品名 |商品分類 |販売単価|仕入単価|登録日 0008 |包丁 |キッチン用品|40000 |600 |2014-07-15 0009 |ステイプラー|事務用品 |20 |320 |null 0010 |Tシャツ |衣服 |100 |1500 |2014-07-16 0011 |椅子 |什器 |5000 |3400 |null ==== hiU.WITH_NAME|hiU.AS_null_DISP 商品ID|商品名 |商品分類 |販売単価|仕入単価|登録日 ------+------------+------------+--------+--------+---------- 0008 |包丁 |キッチン用品|40000 |600 |2014-07-15 0009 |ステイプラー|事務用品 |20 |320 |null 0010 |Tシャツ |衣服 |100 |1500 |2014-07-16 0011 |椅子 |什器 |5000 |3400 |null
data_ - 元の文字列option_ - hiU.WITH_NAMEを付けると先頭行を第2行目の間に罫線が付きます。
               hiU.AS_null_DISPを付けるとnullポインタを"null"表示します。
               表示されます。public static String toTable(List<String[]> data_)
toTable(List,long)のオプション無し版です。例がtoTable(List,long)
に載っていますので参照してください。data_ - 元の文字列public static String[] tabAlign(String[] text_, int tab_)
タブを含む複数の文字列でタブによる整列を行います。
例えば行毎にタブ位置の異なってしまう次のような文字列
並びがあった場合でも、タブにより複数行で位置調整を行い
ます。
     String[] lines={
        "   abc\t= ABC;"
       ,"   abcdefghi\t= ABCDEFGHI;"
       ,"   xyz\t= XYZ;"
        };
 これをそのまま行出力すると、8タブでは
      "   abc  = ABC;"
      "   abcdefghi    = ABCDEFGHI;"
      "   xyz  = XYZ;"
 という形に見える。
 これに対し
   String[] lines2= hiU.tabAlign(lines,8);
 を施し行出力するとタブ位置が調整され
      "   abc          = ABC;"
      "   abcdefghi    = ABCDEFGHI;"
      "   xyz          = XYZ;"
 と出力される。
 タブ位置を1とし
     String[] lines2= hiU.tabAlign(lines,1);
 とし、出力すれば
     "   abc       = ABC;"
      "   abcdefghi = ABCDEFGHI;"
      "   xyz       = XYZ;"
 と出力される。
タブは空白に置き換わります。
text_ - 文字列(1要素1行)tab_ - タブストップ位置 4とか8とかpublic String scale(int n_)
public static ArrayList<String[]> getStringLists(String text_, String dlmt_)
次のような文字列を行、カラムに分割することができます。
String text="a,b,c;d,e,f;x,y,z;"; ArrayList<String[]> rows= hiText.getStringLists(text,",;"); // rows には [a][b][c] // [e][e][f] // [x][y][z] というデータが得られる。
文字列前後の改行や空白は無視されます。
空白を含むデータの場合は引用符で囲んでください。シングルクオート、ダブルクオートの
どちらも使用できます。
空データはnullとなります。
text_ - 分解したい文字列dlmt_ - デリミタ(カラム用、行用の2文字)public static ArrayList<String[]> getStringLists(String text_, String dlmt_, long option_)
getStringLists(String,String)にオプション指定を付けたものです。コメントの
取扱いや空文字の取り扱いなどを指定できる他、hiTextTable.SPLIT_OPTIONとともに
hiU.SAVE_MEMORY
を指定すると、カラムの各要素にintern()を施し、同じ値が沢山
ある場合にメモリ節約ができます。
   ArrayList<String[]> defs= hiText.getStringLists(
                                   text,",;",hiTextTable.SPLIT_OPTION|hiU.SAVE_MEMORY);
text_ - 分解したい文字列dlmt_ - デリミタ(カラム用、行用の2文字)option_ - オプションpublic static ArrayList<String[]> getStringLists(ArrayList<String> lines_, String dlmt_)
lines_ - 分解したい文字列のリストdlmt_ - デリミタ(カラムデリミタ)public static ArrayList<String[]> getStringLists(ArrayList<String> lines_, String dlmt_, long option_)
getStringLists(ArrayList,String)にオプション指定を付けたものです。コメントの
取扱いや空文字の取り扱いなどを指定できる他、hiTextTable.SPLIT_OPTIONとともに
hiU.SAVE_MEMORY
を指定すると、カラムの各要素にintern()を施し、同じ値が沢山
ある場合にメモリ節約ができます。lines_ - 分解したい文字列のリストdlmt_ - デリミタ(カラムデリミタ)option_ - オプション