2013年09月30日
川俣晶の縁側ソフトウェア技術雑記 total 12396 count

C#でカタカナひらがな変換を行うToHiragana、ToKatakanaメソッドを実装してみる

Written By: 川俣 晶連絡先

「カタカナひらがな変換、実装できるのは分かっているが、何行で実装できるか挑戦だ」

「C#でやるんだね?」

「既存のstringクラスを拡張したいからね。C#の拡張メソッドでToStringを呼ぶみたいにToHiraganaって呼んでみたい」

「結果を見せてくれ」

C#のコード §

using System;

using System.Linq;

// 対応関係が無いと思われる文字は扱っていない

public static class KataHira

{

    public static string ToKatakana(this string s)

    {

        return new string(s.Select(c => (c >= 'ぁ' && c <= 'ゖ') ? (char)(c + 'ァ' - 'ぁ') : c).ToArray());

    }

    public static string ToHiragana(this string s)

    {

        return new string(s.Select(c => (c >= 'ァ' && c <= 'ヶ') ? (char)(c + 'ぁ' - 'ァ') : c).ToArray());

    }

}

class Program

{

    static void Main(string[] args)

    {

        var a = "はろーわーるど";

        var b = a.ToKatakana();

        var c = b.ToHiragana();

        Console.WriteLine("元の文字列:{0}", a);

        Console.WriteLine("ToKatakana:{0}", b);

        Console.WriteLine("ToHiragana:{0}", c);

    }

}

実行結果 §

元の文字列:はろーわーるど

ToKatakana:ハローワールド

ToHiragana:はろーわーるど

感想 §

「なんとメソッドは実質1行じゃないか」

「もっと短く書けるアイデアがあれば教えてくれ。募集するぞ」

「なんで?」

「charへのキャストとか、ToArrayメソッド呼び出しが本質と関係無くうるさい感じだから」

「取れるの?」

「分からない。取れたらすっきりする」

「ところで、今更こんなメソッドを実装して見た理由はなに?」

「内緒」