snakeToCamell.js
function converter(match, offset, string){
var inp = match;
if(/^[A-Z0-9]+$/.test(inp)){
return inp.toLowerCase();
}
//スネークケースかどうか?アンダースコアがあるか?
if(/_/.test(inp)){
//スネーク→キャメル
//全て小文字に
inp = inp.toLowerCase();
//区切り文字の後を大文字に
inp = inp.replace(/(_|^)(.)/g, snakeToCamelConv);
//先頭を小文字に
inp = inp.charAt(0).toLowerCase() + inp.slice(1);
}else{
//キャメル→スネーク
//大文字の前に「アンダースコア」を追加
inp = inp.replace(/([A-Z])/g, camelToSnakeConv);
//全て大文字に
inp = inp.toUpperCase();
}
return inp;
}
function snakeToCamelConv(match, p1, p2, offset, string){
return p2.toUpperCase();
}
function camelToSnakeConv(match, p1, offset, string){
return '_' + p1;
}
//(INPUT)選択範囲を取得
var str = Editor.GetSelectedString(0);
//(PROCESS)スネークケース⇔キャメルケース
str = str.replace(/(\w+)/g, converter);
//(OUT)編集したテキストを設定
Editor.InsText(str);
使用例
対象行を選択して、当マクロを実行する。
実行前
DATA1
SAMPLE_DATA2
SAMPLE_TEST_DATA3
実行後
data1
sampleData2
sampleTestData3
再実行後
DATA1
SAMPLE_DATA2
SAMPLE_TEST_DATA3