【サクラエディタマクロ】カンマ整列配置
Insert文などでカンマの位置を揃えたい場合など
/** カンマ配置 */
var e = Editor;
var selectStr = "";
var outStr = "";
var lines = "";
var rtnCdList = ["\r\n","\r","\n"];
var rtnIndex = 0;
var topIndex = 0;
var endIndex = 0;
var maxLength = 0;
//選択行取得
selectStr = e.GetSelectedString(0);
//選択文字が存在する場合のみ処理を行う
if(selectStr != ""){
//開始行取得
topIndex = e.GetSelectLineFrom();
//終了行取得
endIndex = e.GetSelectLineTo();
//改行コードの判定
for(var i = 0; i < rtnCdList.length; i++){
if(selectStr.indexOf(rtnCdList[i]) != -1){
rtnIndex = i;
break;
}
}
//指定の改行コードで分割
var lines = selectStr.split(rtnCdList[rtnIndex]);
//右端から不要な文字を除去していく
for(var i = 0; i < lines.length; i++){
for(var k = lines[i].length; k > 0; k--){
if(lines[i].substring(k - 1, k) == " "
|| lines[i].substring(k - 1, k) == ","
|| lines[i].substring(k - 1, k) == " "
|| lines[i].substring(k - 1, k) == "\t"){
lines[i] = lines[i].substring(0, k - 1);
}else{
break;
}
}
//最大文字長取得
var strs = lines[i].split("");
var cnt = 0;
var len = 0;
for(var k = 0; k < strs.length; k++){
if(strs[k].match(/[^\x01-\x7E]/) != null){
cnt = cnt + 1;
}
}
len = strs.length + cnt;
if(len > maxLength){
maxLength = len;
}
}
//カンマ配置
for(var i = 0; i < lines.length; i++){
var cnt = 0;
var strs = lines[i].split("");
for(var k = 0; k < strs.length; k++){
if(strs[k].match(/[^\x01-\x7E]/) != null){
cnt = cnt + 1;
}
}
for(var k = 0; k <= maxLength - cnt; k++){
if(lines[i].length === maxLength - cnt){
lines[i] = lines[i] + ",";
break;
}else{
lines[i] = lines[i] + " ";
}
}
outStr = outStr + lines[i] + rtnCdList[rtnIndex];
}
//出力
e.InsText(outStr);
//範囲を再選択
e.Jump(topIndex, 0);
e.BeginSelect();
e.Jump(endIndex, 0);
e.GoLineEnd_Sel();
e.BeginSelect();