選択範囲の数字をゼロ詰めして桁を合わせるサクラエディタのマクロ
本日3つ目。
padzero.js
(function(){ String.prototype.repeat = function(count){ var result = ''; for(var i = 0; i < count; i++){ result += this; } return result; }; String.prototype.padLeft = function(length, char){ return char.repeat(length - this.length) + this; }; if(Editor.IsTextSelected() == 0) Editor.SelectAll(); var selection = Editor.GetSelectedString(0); var matches = selection.match(/\d+/g); var maxlength = 0; for(var i = 0; i < matches.length; i++){ if(maxlength < matches[i].length) maxlength = matches[i].length; } var result = selection.replace(/\d+/g, function(m){ return m.padLeft(maxlength, '0'); }); Editor.InsText(result); })();
使い方
1 10 100
こういう状況でマクロを実行すると、
001 010 100
こうなる。つまり数字にゼロを詰めて桁数を合わせたわけだ。一番桁数の大きな数字に合うようになってる。
数字以外の文字が含まれててもいい。
abc1defg22hijkl33333mnop44qrs55tuvwxy6666z
これが
abc00001defg00022hijkl33333mnop00044qrs00055tuvwxy06666z
こうなる。あんまりこういう使い方は無いと思うけど。