toZenkakuKatakana method

String toZenkakuKatakana()

Converts half-width katakana to full-width katakana.

半角カタカナを全角カタカナに変換します。

final text = "アイウエオ";
final converted = text.toZenkakuKatakana(); // "アイウエオ"

Implementation

String toZenkakuKatakana() {
  var val = this;
  val = val.replaceAllMapped(RegExp("[ウカ-トハ-ホ]゙"), (Match m) {
    var dakuten = <String, String>{
      "ヴ": "ヴ",
      "ガ": "ガ",
      "ギ": "ギ",
      "グ": "グ",
      "ゲ": "ゲ",
      "ゴ": "ゴ",
      "ザ": "ザ",
      "ジ": "ジ",
      "ズ": "ズ",
      "ゼ": "ゼ",
      "ゾ": "ゾ",
      "ダ": "ダ",
      "ヂ": "ヂ",
      "ヅ": "ヅ",
      "デ": "デ",
      "ド": "ド",
      "バ": "バ",
      "ビ": "ビ",
      "ブ": "ブ",
      "ベ": "ベ",
      "ボ": "ボ",
    };
    return dakuten[m.group(0)!] ?? m.group(0)!;
  });
  val = val.replaceAllMapped(RegExp("[ハ-ホ]゚"), (Match m) {
    var handakuten = <String, String>{
      "パ": "パ",
      "ピ": "ピ",
      "プ": "プ",
      "ペ": "ペ",
      "ポ": "ポ",
    };
    return handakuten[m.group(0)!] ?? m.group(0)!;
  });
  val = val.replaceAllMapped(RegExp("[ヲ-ンー]"), (Match m) {
    var other = <String, String>{
      "ア": "ア",
      "イ": "イ",
      "ウ": "ウ",
      "エ": "エ",
      "オ": "オ",
      "ァ": "ァ",
      "ィ": "ィ",
      "ゥ": "ゥ",
      "ェ": "ェ",
      "ォ": "ォ",
      "カ": "カ",
      "キ": "キ",
      "ク": "ク",
      "ケ": "ケ",
      "コ": "コ",
      "サ": "サ",
      "シ": "シ",
      "ス": "ス",
      "セ": "セ",
      "ソ": "ソ",
      "タ": "タ",
      "チ": "チ",
      "ツ": "ツ",
      "テ": "テ",
      "ト": "ト",
      "ナ": "ナ",
      "ニ": "ニ",
      "ヌ": "ヌ",
      "ネ": "ネ",
      "ノ": "ノ",
      "ハ": "ハ",
      "ヒ": "ヒ",
      "フ": "フ",
      "ヘ": "ヘ",
      "ホ": "ホ",
      "マ": "マ",
      "ミ": "ミ",
      "ム": "ム",
      "メ": "メ",
      "モ": "モ",
      "ヤ": "ヤ",
      "ユ": "ユ",
      "ヨ": "ヨ",
      "ラ": "ラ",
      "リ": "リ",
      "ル": "ル",
      "レ": "レ",
      "ロ": "ロ",
      "ワ": "ワ",
      "ヲ": "ヲ",
      "ン": "ン",
      "ッ": "ッ",
      "ャ": "ャ",
      "ュ": "ュ",
      "ョ": "ョ",
      "ー": "ー",
    };
    return other[m.group(0)!] ?? m.group(0)!;
  });

  return val;
}