常用sakuraマクロ

### 行頭の空白削除
```
S_ReplaceAll('^ +', '', 44);	// すべて置換
S_ReDraw(0);	// 再描画
```


### スネークからキャメルに変換
```
S_ReplaceAll('_a', 'A', 40);
S_ReplaceAll('_b', 'B', 40);
S_ReplaceAll('_c', 'C', 40);
S_ReplaceAll('_d', 'D', 40);
S_ReplaceAll('_e', 'E', 40);
S_ReplaceAll('_f', 'F', 40);
S_ReplaceAll('_g', 'G', 40);
S_ReplaceAll('_h', 'H', 40);
S_ReplaceAll('_i', 'I', 40);
S_ReplaceAll('_j', 'J', 40);
S_ReplaceAll('_k', 'K', 40);
S_ReplaceAll('_l', 'L', 40);
S_ReplaceAll('_m', 'M', 40);
S_ReplaceAll('_n', 'N', 40);
S_ReplaceAll('_o', 'O', 40);
S_ReplaceAll('_p', 'P', 40);
S_ReplaceAll('_q', 'Q', 40);
S_ReplaceAll('_r', 'R', 40);
S_ReplaceAll('_s', 'S', 40);
S_ReplaceAll('_t', 'T', 40);
S_ReplaceAll('_u', 'U', 40);
S_ReplaceAll('_v', 'V', 40);
S_ReplaceAll('_w', 'W', 40);
S_ReplaceAll('_x', 'X', 40);
S_ReplaceAll('_y', 'Y', 40);
S_ReplaceAll('_z', 'Z', 40);

S_ReDraw(0);	// 再描画
```



### 改行消す
```
S_ReplaceAll('\\r\\n', '', 44);	// すべて置換
S_ReplaceAll('\\n', '', 44);	// すべて置換
S_ReplaceAll('\\r', '', 44);	// すべて置換
S_ReplaceAll(' ', '', 44);	// すべて置換
S_ReplaceAll('	', '', 44);	// すべて置換
S_ReDraw(0);	// 再描画
```




### 保存する
```
FileSave();
```

### 閉じる
```
WinClose();
```


### Json整形
```
// 行数を取得
var cnt = GetLineCount(0);
// 改行を除いた行文字列を取得
var textAll = "";
for (var i = 1; i <= cnt; i++) {
    var str = GetLineStr(i).replace(/\r\n/,"").replace(/\n/,"");
    textAll += str;
}
var editJson = "";
var innerFlg = false;
var intentLv = 0;
var quoteType = [];
var blockType = [];
var preChr = "";
for (var i = 0; i < textAll.length; i++) {
    var prefix = "";
    var suffix = "";
    var c = textAll.substring(i, i + 1);
    if (!innerFlg) {
        if (c == " ") {
            continue;
        }
        if (c == "\"" || c == "'"){
            innerFlg = true;
            quoteType[quoteType.length] = c;
            // JSON または 配列の1つ目の要素の時はスペース1個を追加
            var chkText = editJson.replace(/( |\t|\r\n|\n)/g, "");
            if (chkText.length > 0) {
                var preChar = chkText.substring(chkText.length - 1, chkText.length);
                if (preChar == "[" || preChar == "{") {
                    c = " " + c;
                }
            }
        } else {
            if (c == "{" || c == "[") {
                suffix = "\n";
                intentLv = intentLv + 1;
                blockType[blockType.length] = c;
                for (var j = 0; j < intentLv; j++) {
                    suffix = suffix + "\t";
                }
            }
            if (c == "}" || c == "]") {
                prefix = "\n";
                suffix = "\n";
                intentLv = intentLv - 1;
                blockType.pop(1);
            }
            if (c == ",") {
                prefix = "\n";
            }
        }
    } else {
        if (quoteType.length > 0 && c == quoteType[quoteType.length - 1]){
            innerFlg = false;
        }
    }
    if (prefix != "") {
        for (var j = 0; j < intentLv; j++) {
            prefix = prefix + "\t";
        }
    }
    var line = "" + prefix + c + suffix;
    if (preChr == "\n" && line.substring(0, 1) == "\n") {
        line = line.substring(1);
    }
    editJson = editJson + "" + line;
    preChr = line.substring(line.length - 1, line.length);
}
SelectAll(0);
InsText(editJson + "\n");
```


### ゼロ埋めする
```
(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);
})();
```

### 連番生成するやつ
```
(function(){
    String.prototype.chomp = function(){
        return this.replace(/[\r\n]+$/, '');
    };
    
    function get_upline(){
        Editor.GoLineTop();
        Editor.Up_Sel();
        return Editor.GetSelectedString(0).chomp();
    }
    
    if(Editor.IsTextSelected() != 0) return;
    
    var end_value = get_upline();
    var begin_value = get_upline();
    if(!/^\d+$/.test(end_value) || !/^\d+$/.test(begin_value)) return;
    
    var result = [];
    for(var i = parseInt(begin_value); i <= parseInt(end_value); i++){
        result.push(i.toString());
    }
    
    var n = ['\r\n', '\r', '\n'][Editor.GetLineCode()];
    Editor.GoLineTop();
    Editor.Down_Sel();
    Editor.Down_Sel();
    Editor.InsText(result.join(n) + n);
})();
```


### 改行をけす
```
置換前：^\r\n
置換後：（空白）
正規表現にチェック
範囲：選択範囲
```

### 行頭に挿入する
```
1. Ctrl + R
2. 正規表現にチェックを入れる
3. 置換前に「^」を入力
4. 置換後に挿入したい文字を入力
```

### 行末に挿入する
```
1. Ctrl + R
2. 正規表現にチェックを入れる
3. 置換前に「$」を入力
4. 置換後に挿入したい文字を入力
```