[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
あまりやるべきではないと思うが、テキストで表を出力したい、みたいなことがしばしばある。例えば、以下のような感じである。
《エフェクト名》 /Lv/タイミング/難易度 /対象 /射程/侵蝕値 /制限 /効果 《リザレクト》 /1 /オート /自動成功/自身 /至近/効果参照/― /(Lv)D点HP回復、侵蝕値上昇 《ワーディング》 /1 /オート /自動成功/シーン/視界/0 /― /非オーヴァードをエキストラ化 《プラズマカノン》/5 /メジャー /RC /単体 /視界/4 /100 /ATK+Lv×5 《コンセ》 /2 /メジャー /シンド /- /- /2 /- /C値-Lv 《結合粉砕》 /3 /メジャー /シンド /- /- /4 /ピュア/ダイス+Lv 装甲無視 《閃熱の防壁》 /3 /オート /- /単体 /視界/4 /ピュア/自身不可。ラウンド1回。ダメージ Lv+2 軽減 《焦熱の弾丸》 /1 /メジャー /RC /単体 /視界/1 /- /ATK+Lv+2
やってみると案外難しい。各列の横幅をどうそろえればいいのか。基本的には表の全行をなめ、各行の横幅について最大のものを取得する。この最大のものを横幅として各行を描画し内容が幅に満たない項目については空白を詰めるという手順となる。例えば上表の1列目は "《プラズマカノン》" が幅が最大となるから、この幅に合わせて全行の1列目を描画する。 "《コンセ》" の後には8個の半角スペースを入れて列の幅を合わせている。
が、これが意外に面倒である。全角の文字と半角の文字が混在する場合に横幅を計算するのが難しいのだ。上述の表は全てのエフェクト名が全角文字だから良いが「MAXボルテージ」等が入ってくると途端に計算が面倒になる。
が、文字数のカウントについてありがたい記事があった。JavaScript 文字列の長さ(バイト数)を取得する(zukucode)である。これを参考に文字列の長さを取る関数を作成し表めいたテキストの作成を実現できた(動作例 / 表の生成部分コード)。長さがまちまちになりやすい備考欄を末尾に持ってくるとスペース的な無駄がなくていい感じのようだ。
ただし、テキストでやる場合もそうでない場合も言えることだが横に広い表は見にくくなるので項目数が多い場合は何か別の手段で表示することを検討した方が良さそう。
ただいまコメントを受けつけておりません。