アジア周辺の国用の便利ライブラリVisual Studio International Pack 1.0っていうのが出てた。
↓からダウンロードできる。
http://www.microsoft.com/downloads/details.aspx?FamilyID=F9CFC884-1F00-45FA-B2FB-303D9E110BC7&displaylang=ja&rss_fdn=MSDNTopNewInfo
とりあえず、半角カタカナからカタカナとかに変換してくれる機能を持つというJPNKanaConvを試してみる。
早速お試し用プロジェクトをこさえる。
↑のをインストールしたらGACに追加されるのかと思ったら、インストールフォルダの下にdllが入ってるみたい。
ということで、テスト用プロジェクトをクラスライブラリで新規作成して、JpnKanaConversion.dllとJpnKanaConvHelper.dllをプロジェクトの参照に追加した。
ついでにNUnitの参照も追加しておいた。
早速お試し!
今回は、NUnit形式でお試しコードを書いてみた。とりあえず、簡単に使うだけならMicrosoft.International.Converters.KanaConverterクラスの静的メソッドを使うだけでよさそう。
using Microsoft.International.Converters;
using NUnit.Core;
using NUnit.Framework;
namespace JpnTest
{
[TestFixture]
public class JpnStudyTest
{
[Test]
public void カタカナから平仮名()
{
Assert.AreEqual(
"あいうえお",
KanaConverter.KatakanaToHiragana("アイウエオ"),
"アイウエオがあいうえおに!");
}
[Test]
public void 平仮名から半角カタカナ()
{
Assert.AreEqual(
"アイウエオ",
KanaConverter.HiraganaToHalfwidthKatakana("あいうえお"),
"あいうえおがアイウエオに!");
}
[Test]
public void ローマ字もOK()
{
Assert.AreEqual(
"たなか",
KanaConverter.RomajiToHiragana("tanaka"),
"ローマ字から平仮名もOK!でも、平仮名からローマ字は無い");
}
}
}
これを実行してみると、ばっちりテスト3つ成功と表示される。
NUnit version 2.4.6
Copyright (C) 2002-2007 Charlie Poole.
Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.
Copyright (C) 2000-2002 Philip Craig.
All Rights Reserved.
Runtime Environment -
OS Version: Microsoft Windows NT 6.0.6000.0
CLR Version: 2.0.50727.1433 ( Net 2.0.50727.1433 )
...
Tests run: 3, Failures: 0, Not run: 0, Time: 1.837 seconds
因みに、ローマ字を変換してくれるといっても、単純な変換テーブルにかけてるだけっぽいので、かゆいところまで手が届くわけじゃない。
そういう細かい変換ルールがある場合は、悲しいけど自作だ!とりあえず、個人的にすごく悲しい例を載せてみる。
[Test]
public void 俺の苗字は駄目だ()
{
Assert.AreEqual(
"おおた",
KanaConverter.RomajiToHiragana("ohta"),
"ootaだとOKだけどohtaは駄目なのさ");
}
実行すると、この部分が失敗してると言われる。「おhた」になってるらしい。
Tests run: 4, Failures: 1, Not run: 0, Time: 1.932 seconds
Test Case Failures:
1) JpnTest.JpnStudyTest.俺の苗字は駄目だ : ootaだとOKだけどohtaは駄目なのさ
String lengths are both 3. Strings differ at index 1.
Expected: "おおた"
But was: "おhた"
ということで、インストールするとついてくるHelpから転載すると…
KanaConverterクラスには、こんなメソッドがある。
- HalfwidthKatakanaToHiragana(String) 半角カタカナからひらがなへ文字を変換します。
- HalfwidthKatakanaToKatakana(String) 半角カタカナからカタカナへ文字を変換します。
- HiraganaToHalfwidthKatakana(String) ひらがなから半角カタカナへ文字を変換します。
- HiraganaToKatakana(String) ひらがなからカタカナへ文字を変換します。
- KatakanaToHalfwidthKatakana(String) カタカナから半角カタカナへ文字を変換します。
- KatakanaToHiragana(String) ひらがなからひらがなへ文字を変換します。
- RomajiToHiragana(String) ローマ字からひらがなへ文字を変換します。
こういうのはどんどん再利用だ!