Hatena::ブログ(Diary)

今日覚えたこと RSSフィード

2008.09.06

選択範囲の数字をゼロ詰めして桁を合わせるサクラエディタのマクロ

本日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

こうなる。あんまりこういう使い方は無いと思うけど。

追記

その他、今日作ったもの。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証