#10022
1da2
メンバー

SNOWさんが効率化をしてくださいました。
ありがとうございます。

var lines = document.selection.Text.replace(/(rn|r)/g, “n”).split(“n”);
var l_num = lines.length; //行数
var c_num = 0; //列数
var cc_num = []; //各列の最大バイト数

for (var i = 0; i c_num) {
c_num = ln.length;
}

//各列の最大文字数を計算
for(var j = 0, n = ln.length; j (cc_num[j] || 0)) {
cc_num[j] = cell_bytenum;
}
}
}

var l_op = prompt( “線種を選んで下さい(1:普通 2:外枠だけ太く 3:太く)”, “1” ) – 0;

switch (l_op) {
case 3 : var c = “┏━┳┓┃┃┣━╋┫┗┻┛”.split(“”); break; //太く
case 2 : var c = “┏━┯┓┃│┠─┼┨┗┷┛”.split(“”); break; //外枠だけ太く
default: var c = “┌─┬┐││├─┼┤└┴┘”.split(“”); break; //普通
}

//先頭行、区切り行、終端行の作成
var p_str = c[0];
var MatrMid = c[6];
var MatrEnd = c[10];

for (var i = 0, n = cc_num.length; i < n; i++) {
for (var j = 0, m = cc_num / 2; j < m; j++) {
p_str += c[1];
MatrMid += c[7];
MatrEnd += c[1];
}
if (i != cc_num.length -1) {
p_str += c[2];
MatrMid += c[8];
MatrEnd += c[11];
} else {
p_str += c[3];
MatrMid += c[9];
MatrEnd += c[12];
}
}

//終端行以外は、改行を追加
p_str += "rn";
MatrMid += "rn";

//データ行の作成
for (i in lines) {
var ln = lines
;
var MatrInt = c[4];
for (var j = 0; j < c_num; j++) {
MatrInt += ln[j] || "";
for (var k = 0, n = cc_num[j] – lenB(ln[j]); k < n; k++) {
MatrInt += " ";
}
MatrInt += c[(j != c_num – 1) ? 5 : 4];
}
p_str += MatrInt + "rn";

//最後の行以外は区切り行を追加
p_str += (i != lines.length -1) ? MatrMid : MatrEnd;
}

document.selection.Text = p_str; //出力

/***** function *****/
function lenB(str) { //文字のバイト長を返す
if (!str) {
return 0; //未定義用処理
}

var result = 0;
for (var i = 0, n = str.length; i = 256) ? 2 : 1;
}
return result;
}