Groovyで選択中の文字列中の全角文字を半角文字に変換するjEditマクロを実装

2023-02-03Groovy,jEdit

jEdit & Groovy ネタ。

エディタで選択中の文字列中の全角文字をすべて半角に変換するマクロです。対応表は 電脳世代.jp のサイトを参考にしました。

力技です!

def text = textArea.selectedText
[
    [n: "0", w: "0"], [n: "1", w: "1"], [n: "2", w: "2"], [n: "3", w: "3"], [n: "4", w: "4"], [n: "5", w: "5"], [n: "6", w: "6"], [n: "7", w: "7"], [n: "8", w: "8"], [n: "9", w: "9"], [n: "a", w: "a"], [n: "b", w: "b"], [n: "c", w: "c"], [n: "d", w: "d"], [n: "e", w: "e"], [n: "f", w: "f"], [n: "g", w: "g"], [n: "h", w: "h"], [n: "i", w: "i"], [n: "j", w: "j"], [n: "k", w: "k"], [n: "l", w: "l"], [n: "m", w: "m"], [n: "n", w: "n"], [n: "o", w: "o"], [n: "p", w: "p"], [n: "q", w: "q"], [n: "r", w: "r"], [n: "s", w: "s"], [n: "t", w: "t"], [n: "u", w: "u"], [n: "v", w: "v"], [n: "w", w: "w"], [n: "x", w: "x"], [n: "y", w: "y"], [n: "z", w: "z"], [n: "A", w: "A"], [n: "B", w: "B"], [n: "C", w: "C"], [n: "D", w: "D"], [n: "E", w: "E"], [n: "F", w: "F"], [n: "G", w: "G"], [n: "H", w: "H"], [n: "I", w: "I"], [n: "J", w: "J"], [n: "K", w: "K"], [n: "L", w: "L"], [n: "M", w: "M"], [n: "N", w: "N"], [n: "O", w: "O"], [n: "P", w: "P"], [n: "Q", w: "Q"], [n: "R", w: "R"], [n: "S", w: "S"], [n: "T", w: "T"], [n: "U", w: "U"], [n: "V", w: "V"], [n: "W", w: "W"], [n: "X", w: "X"], [n: "Y", w: "Y"], [n: "Z", w: "Z"], [n: "ア", w: "ア"], [n: "イ", w: "イ"], [n: "ウ", w: "ウ"], [n: "エ", w: "エ"], [n: "オ", w: "オ"], [n: "カ", w: "カ"], [n: "キ", w: "キ"], [n: "ク", w: "ク"], [n: "ケ", w: "ケ"], [n: "コ", w: "コ"], [n: "サ", w: "サ"], [n: "シ", w: "シ"], [n: "ス", w: "ス"], [n: "セ", w: "セ"], [n: "ソ", w: "ソ"], [n: "タ", w: "タ"], [n: "チ", w: "チ"], [n: "ツ", w: "ツ"], [n: "テ", w: "テ"], [n: "ト", w: "ト"], [n: "ナ", w: "ナ"], [n: "ニ", w: "ニ"], [n: "ヌ", w: "ヌ"], [n: "ネ", w: "ネ"], [n: "ノ", w: "ノ"], [n: "ハ", w: "ハ"], [n: "ヒ", w: "ヒ"], [n: "フ", w: "フ"], [n: "ヘ", w: "ヘ"], [n: "ホ", w: "ホ"], [n: "マ", w: "マ"], [n: "ミ", w: "ミ"], [n: "ム", w: "ム"], [n: "メ", w: "メ"], [n: "モ", w: "モ"], [n: "ヤ", w: "ヤ"], [n: "ユ", w: "ユ"], [n: "ヨ", w: "ヨ"], [n: "ラ", w: "ラ"], [n: "リ", w: "リ"], [n: "ル", w: "ル"], [n: "レ", w: "レ"], [n: "ロ", w: "ロ"], [n: "ワ", w: "ワ"], [n: "ヲ", w: "ヲ"], [n: "ン", w: "ン"], [n: "ァ", w: "ァ"], [n: "ィ", w: "ィ"], [n: "ゥ", w: "ゥ"], [n: "ェ", w: "ェ"], [n: "ォ", w: "ォ"], [n: "ッ", w: "ッ"], [n: "ャ", w: "ャ"], [n: "ュ", w: "ュ"], [n: "ョ", w: "ョ"], [n: "ー", w: "ー"], [n: "。", w: "。"], [n: "、", w: "、"], [n: "・", w: "・"], [n: "「", w: "「"], [n: "」", w: "」"], [n: "゙", w: "゛"], [n: "゚", w: "゜"], [n: "ヴ", w: "ヴ"], [n: "ガ", w: "ガ"], [n: "ギ", w: "ギ"], [n: "グ", w: "グ"], [n: "ゲ", w: "ゲ"], [n: "ゴ", w: "ゴ"], [n: "ザ", w: "ザ"], [n: "ジ", w: "ジ"], [n: "ズ", w: "ズ"], [n: "ゼ", w: "ゼ"], [n: "ゾ", w: "ゾ"], [n: "ダ", w: "ダ"], [n: "ヂ", w: "ヂ"], [n: "ヅ", w: "ヅ"], [n: "デ", w: "デ"], [n: "ド", w: "ド"], [n: "バ", w: "バ"], [n: "ビ", w: "ビ"], [n: "ブ", w: "ブ"], [n: "ベ", w: "ベ"], [n: "ボ", w: "ボ"], [n: "パ", w: "パ"], [n: "ピ", w: "ピ"], [n: "プ", w: "プ"], [n: "ペ", w: "ペ"], [n: "ポ", w: "ポ"],
].each {
    text = text.replace(it.w, it.n)
}
textArea.selectedText = text

いつものようにこれを $HOME/.jedit/macros に配置してメニューからマクロを実行します。

text.replace( **it.w, it.n** ) -> text.replace( **it.n, it.w** )

とすれば、半角から全角への変換もできます。



2023-02-03Groovy,jEdit