2013年09月30日
川俣晶の縁側ソフトウェア技術雑記total 7387 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メソッド呼び出しが本質と関係無くうるさい感じだから」

「取れるの?」

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

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

「内緒」

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2013年
09月
30日
C#で非同期にする理由
3days 0 count
total 4822 count
【技術雑記】の前のコンテンツ
2013年
09月
30日
Win8.1にて、シンプルなXAMLだけでストアアプリのレイアウトをどこまで制御できるか
3days 0 count
total 3731 count
2013年09月30日
川俣晶の縁側ソフトウェア技術雑記total 7387 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メソッド呼び出しが本質と関係無くうるさい感じだから」

「取れるの?」

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

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

「内緒」

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2013年
09月
30日
C#で非同期にする理由
3days 0 count
total 4822 count
【技術雑記】の前のコンテンツ
2013年
09月
30日
Win8.1にて、シンプルなXAMLだけでストアアプリのレイアウトをどこまで制御できるか
3days 0 count
total 3731 count
【技術雑記】のコンテンツ全リスト【技術雑記】の表紙

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20130930161420
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.27 (Alpha-Test) Copyright (c) 2004-2018 Pie Dey.Co.,Ltd.