PowerShellで漢字をローマ字に変換する。

コンピュータ
PowerShellのあれこれ

ファイル名に漢字が含まれていると都合が悪い場面に遭遇し漢字をローマ字に変換する方法を模索してみました。

スポンサーリンク

スクリプト

<#
.SYNOPSIS
 漢字をローマ字に変換
#>


function Kanji2Romaji {
    param($kanji)

    $atbl = @{
       "gya" = "ぎゃ";"gyu" = "ぎゅ";"gyo" = "ぎょ";
       "kya" = "きゃ";"kyu" = "きゅ";"kyo" = "きょ"
       "ja" = "じゃ";"jyu" = "じゅ";"jyo" = "じょ"
       "sha" = "しゃ";"syu" = "しゅ";"syo" = "しょ"
       "dya" = "ぢゃ";"dyu" = "ぢゅ";"dyo" = "ぢょ"
       "tya" = "ちゃ";"tyu" = "ちゅ";"tyo" = "ちょ"
       "pya" = "びゃ";"pyu" = "びゅ";"pyo" = "びょ"
       "hya" = "ひゃ";"hyu" = "ひゅ";"hyo" = "ひょ"
       "mya" = "みゃ";"myu" = "みゅ";"myo" = "みょ"
       "rya" = "りゃ";"ryu" = "りゅ";"ryo" = "りょ"
    }
    $btbl = @{ 
        "a"="あ";"i"="い";"u"="う";"e"="え";"o"="お";
        "ka"= "か";"ki"= "き";"ku"= "く";"ke"= "け";"ko"= "こ";
        "sa"= "さ";"shi"= "し";"su"= "す";"se"= "せ";"so"= "そ";
        "ta"= "た";"chi"= "ち";"tsu"= "つ";"te"= "て";"to"= "と";
        "na"= "な";"ni"= "に";"nu"= "ぬ";"ne"= "ね";"no"= "の";
        "ha"= "は";"hi"= "ひ";"fu"= "ふ";"he"= "へ";"ho"= "ほ";
        "ma"= "ま";"mi"= "み";"mu"= "む";"me"= "め";"mo"= "も";
        "ra"= "ら";"ri"= "り";"ru"= "る";"re"= "れ";"ro"= "ろ";
        "ya"= "や";"yu"= "ゆ";"yo"= "よ";"wa"= "わ";"wo"= "を";
        "n"= "ん";
        "ga"= "が";"gi"= "ぎ";"gu"= "ぐ";"ge"= "げ";"go"= "ご";
        "za"= "ざ";"ji"= "じ";"zu"= "ず";"ze"= "ぜ";"zo"= "ぞ";
        "da"= "だ";"di"= "ぢ";"du"= "づ";"de"= "で";"do"= "ど";
        "ba"= "ば";"bi"= "び";"bu"= "ぶ";"be"= "べ";"bo"= "ぼ";
        "pa"= "ぱ";"pi"= "ぴ";"pu"= "ぷ";"pe"= "ぺ";"po"= "ぽ";
    }

    $romaji = ""

    $t = [Windows.Globalization.JapanesePhoneticAnalyzer, Windows.Globalization, ContentType=WindowsRuntime]::GetWords($kanji, $true)

    $t | % { $romaji += $_.YomiText }

    # 先に置き換えた方が良い文字
    foreach($akey in $atbl.Keys) {
        $romaji = $romaji -replace $atbl[$akey], $akey 
    }
    # メインの置き換え
    foreach($bkey in $btbl.Keys) {
        $romaji = $romaji -replace $btbl[$bkey], $bkey 
    }
    # 空白を置き換え
    $romaji = $romaji -replace " ", " "

    $romaji
}

Write-Host (Kanji2Romaji "漢字 犬")

実行結果

kanji inu

コメント