【サクラエディタマクロ】カンマ整列配置

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();