KazMuzik.net
Music / Technology / Healthcare / Immigration / アメリカ
Google
 
<< my ContentGetter class - Kaz Muzik Blog Backup Project #7M-Audio Fast Track USB & Studiophile DX4 >>

Japanese Character Utility #1 - カタカナ <-> ひらがな - KazMuzik Blog
2007-04-22 15:56

日本語の character を扱う utility class を作ってみます。

まずは、カタカナとひらがなの相互の変換です。Unicode では、ひらがなは 3040 - 309F に、カタカナは 30A0 - 30FF にマッピングされ、だいたい 1:1 の関係になっています。ただし、カタカナの「コンピュータ」をひらがなに変換するときに、「ー」はそのままにして、「こんぴゅーた」とするのが自然なので、これだけは特別に処理しています。
public class CharUtils {

  // Hiragana to Katakana
  public static String hiraganaTokatakana(String s) {
    int n = s.length();
    StringBuilder sb = new StringBuilder(n);
    for (int i = 0; i < n; i++) {
      char c = s.charAt(i);
      sb.append( hiraganaToKatakana(c) );
    }
    return sb.toString();
  }

  public static char hiraganaToKatakana(char c) {
    if (c < '\u3040') {
      return c;
    }
    else if (c > '\u309f') {
      return c;
    }
    return (char)(c + '\u0060');
  }

  // Katakana to Hiragana
  public static String katakanaToHiragana(String s) {
    int n = s.length();
    StringBuilder sb = new StringBuilder(n);
    for (int i = 0; i < n; i++) {
      char c = s.charAt(i);
      sb.append( katakanaToHiragana(c) );
    }
    return sb.toString();
  }

  public static char katakanaToHiragana(char c) {
    if (c < '\u30a0') {
      return c;
    }
    else if (c > '\u30ff') {
      return c;
    }
    else if (c == '\u30fc') {
      return c;
    }
    return (char)(c - '\u0060');
  }

  public static void main(String[] args) throws Exception {
    // Hiragana to Katakana
    for (char c = '\u3040' ; c < '\u30a0'; c++) {
      System.out.printf("%c%c", c, hiraganaToKatakana(c));
      if (c % 16 == 15) {
        System.out.println();
      }
      else {
        System.out.print("|");
      }
    }
    System.out.println();
    // Katakana to Hiragana
    for (char c = '\u30a0' ; c < '\u3100'; c++) {
      System.out.printf("%c%c", c, katakanaToHiragana(c));
      if (c % 16 == 15) {
        System.out.println();
      }
      else {
        System.out.print("|");
      }
    }
    System.out.println();
  }
}

$ javac CharUtils.java
$ java CharUtils
぀゠|ぁァ|あア|ぃィ|いイ|ぅゥ|うウ|ぇェ|えエ|ぉォ|おオ|かカ|がガ|きキ|ぎギ|くク
ぐグ|けケ|げゲ|こコ|ごゴ|さサ|ざザ|しシ|じジ|すス|ずズ|せセ|ぜゼ|そソ|ぞゾ|たタ
だダ|ちチ|ぢヂ|っッ|つツ|づヅ|てテ|でデ|とト|どド|なナ|にニ|ぬヌ|ねネ|のノ|はハ
ばバ|ぱパ|ひヒ|びビ|ぴピ|ふフ|ぶブ|ぷプ|へヘ|べベ|ぺペ|ほホ|ぼボ|ぽポ|まマ|みミ
むム|めメ|もモ|ゃャ|やヤ|ゅュ|ゆユ|ょョ|よヨ|らラ|りリ|るル|れレ|ろロ|ゎヮ|わワ
ゐヰ|ゑヱ|をヲ|んン|ゔヴ|ゕヵ|ゖヶ|゗ヷ|゘ヸ|゙ヹ|゚ヺ|゛・|゜ー|ゝヽ|ゞヾ|ゟヿ

゠぀|ァぁ|アあ|ィぃ|イい|ゥぅ|ウう|ェぇ|エえ|ォぉ|オお|カか|ガが|キき|ギぎ|クく
グぐ|ケけ|ゲげ|コこ|ゴご|サさ|ザざ|シし|ジじ|スす|ズず|セせ|ゼぜ|ソそ|ゾぞ|タた
ダだ|チち|ヂぢ|ッっ|ツつ|ヅづ|テて|デで|トと|ドど|ナな|ニに|ヌぬ|ネね|ノの|ハは
バば|パぱ|ヒひ|ビび|ピぴ|フふ|ブぶ|プぷ|ヘへ|ベべ|ペぺ|ホほ|ボぼ|ポぽ|マま|ミみ
ムむ|メめ|モも|ャゃ|ヤや|ュゅ|ユゆ|ョょ|ヨよ|ラら|リり|ルる|レれ|ロろ|ヮゎ|ワわ
ヰゐ|ヱゑ|ヲを|ンん|ヴゔ|ヵゕ|ヶゖ|ヷ゗|ヸ゘|ヹ゙|ヺ゚|・゛|ーー|ヽゝ|ヾゞ|ヿゟ

$


-> #2

*

Tags: programming