LoginSignup
0
0

[メモ] PowerShellでかな文字列を平仮名全角清音に変換

Last updated at Posted at 2023-05-20

PowerShellで、ひらがな、カタカナ、半角カナ交じりの文字列に対して以下の変換を実施する。

  • すべてひらがなにする
  • 濁音、半濁音を清音にする("ば"や"ぱ"→"は")
  • 小さな文字(拗音、促音文字)を大きな文字にする。
$str = "ヴぁーちゃルグルーぷ"

# 清音化とひらがな化
# 一度半角カナにして濁点、半濁点を置換削除するバッドノウハウを使用
[reflection.assembly]::LoadWithPartialName("Microsoft.VisualBasic") | Out-Null
$str = [Microsoft.VisualBasic.Strings]::StrConv($str, [Microsoft.VisualBasic.VbStrConv]::Katakana)
$str = [Microsoft.VisualBasic.Strings]::StrConv($str, [Microsoft.VisualBasic.VbStrConv]::Narrow)
$str = $str -replace "[゙゚]", ""
$str = [Microsoft.VisualBasic.Strings]::StrConv($str, [Microsoft.VisualBasic.VbStrConv]::Wide)
$str = [Microsoft.VisualBasic.Strings]::StrConv($str, [Microsoft.VisualBasic.VbStrConv]::Hiragana)

# 小さい文字(拗音、促音)を大きな文字に
# ここは単純に一つずつ置換
$from = "ぁぃぅぇぉゃゅょっ"
$to = "あいうえおやゆよつ"
0 .. ($from.Length - 1) | %{ $str = $str -replace $from.Chars($_), $to.Chars($_) }

return $str

参考

strConv関数を使う方法と、引数などについては以下を参考にしました。

清音化を、一度半角カナにして濁点と半濁点を置換削除で行うのは、昔ながらのバッドノウハウ。最後の拗音、促音の置換をループでやるのも、昔ながらの普通の文字列処理技(だと思う)。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0