DoboWiki
Top
> .NETプログラミング研究/85 をテンプレートにして作成
.NETプログラミング研究/85 をテンプレートにして作成
開始行:
#title(Visual Studio International Pack: Japanese Kana Co...
#navi(.NETプログラミング研究)
#contents
*Visual Studio International Pack: Japanese Kana Conversi...
**Visual Studio International Packとは? [#qd83a81b]
Visual Studio International Packはマイクロソフトが配布し...
現在のバージョンである1.0では、以下の7つの機能を提供しま...
-East Asia Numeric Formatting Library(東アジアのための数...
East Asia Numeric Formatting Libraryは数値データを日本語...
-Japanese Kana Conversion Library(日本語かな変換ライブラ...
かな文字セットを別のかな文字セットに変換するための一連の...
-Japanese Text Alignment Library(日本語テキスト整列ライ...
日本固有の均等割付を用いて文字列を描画するためのライブラ...
-Japanese Yomi Auto-Completion Library(日本語読みがなオ...
日本語IME における読みの入力に対応したオートコンプリート...
-Korean Auto Complete TextBox Control(韓国語オートコンプ...
韓国語入力に対応したオートコンプリート機能を持つTextBox ...
-Simplified Chinese Pin-Yin Conversion Library(簡体字中...
簡体字中国語で一般的に用いられるPolyphone、Homophone、Pin...
-Traditional Chinese to Simplified Chinese Conversion Lib...
繁体字中国語と簡体字中国語の間の双方向変換を容易にするク...
Visual Studio International Pack 1.0のシステム要件は以下...
-Microsoft Visual Studio 2005 または Microsoft Visual Stu...
-Microsoft Office 2007~
Traditional to Simplified Chinese Conversion Library and ...
この内、今回は、Japanese Kana Conversion Library(日本語...
**ダウンロードとインストール [#j7703ae1]
Japanese Kana Conversion Libraryをインストールする手順は...
+「[[Microsoft Visual Studio International Pack 1.0 ダウ...
+vsintlpack1.zipを展開する。
+7つのmsiファイルが出来るが、"JPNKanaConv.msi"を実行し、...
+プログラムメニューの「Microsoft Visual Studio Internatio...
**参照の追加 [#s794b7fe]
インストールしたライブラリを使用するには、「JpnKanaConver...
DLLを参照に追加する具体的な方法は、「[[「○○○.dllを参照に...
**Japanese Kana Conversion Libraryの機能 [#v6e6dfdf]
Japanese Kana Conversion Libraryは大きく分けて2つの機能を...
**KanaConverterクラス [#e61c370d]
KanaConverterクラスには次の7つの静的メソッドがあります。
|メソッド名|説明|h
|HalfwidthKatakanaToHiragana|半角カタカナからひらがなへ文...
|HalfwidthKatakanaToKatakana|半角カタカナからカタカナへ文...
|HiraganaToHalfwidthKatakana|ひらがなから半角カタカナへ文...
|HiraganaToKatakana|ひらがなからカタカナへ文字を変換しま...
|KatakanaToHalfwidthKatakana|カタカナから半角カタカナへ文...
|KatakanaToHiragana|カタカナからひらがなへ文字を変換しま...
|RomajiToHiragana|ローマ字からひらがなへ文字を変換します。|
ぞれぞれのメソッドを使用した例を以下に示します。
#code(vbnet){{
'半角カタカナをひらがなに変換する
Dim str1 As String = "アボカド"
Dim ret1 As String = Microsoft.International.Converters.K...
HalfwidthKatakanaToHiragana(str1)
Console.WriteLine(ret1)
'"あぼかど"と表示される
'半角カタカナをカタカナに変換する
Dim str2 As String = "アボカド"
Dim ret2 As String = Microsoft.International.Converters.K...
HalfwidthKatakanaToKatakana(str2)
Console.WriteLine(ret2)
'"アボカド"と表示される
'ひらがなを半角カタカナに変換する
Dim str3 As String = "あぼかど"
Dim ret3 As String = Microsoft.International.Converters.K...
HiraganaToHalfwidthKatakana(str3)
Console.WriteLine(ret3)
'"アボカド"と表示される
'ひらがなをカタカナに変換する
Dim str4 As String = "あぼかど"
Dim ret4 As String = Microsoft.International.Converters.K...
HiraganaToKatakana(str4)
Console.WriteLine(ret4)
'"アボカド"と表示される
'カタカナを半角カタカナに変換する
Dim str5 As String = "アボカド"
Dim ret5 As String = Microsoft.International.Converters.K...
KatakanaToHalfwidthKatakana(str5)
Console.WriteLine(ret5)
'"アボカド"と表示される
'カタカナをひらがなに変換する
Dim str6 As String = "アボカド"
Dim ret6 As String = Microsoft.International.Converters.K...
KatakanaToHiragana(str6)
Console.WriteLine(ret6)
'"あぼかど"と表示される
'ローマ字をひらがなに変換する
Dim str7 As String = "abokado"
Dim ret7 As String = Microsoft.International.Converters.K...
RomajiToHiragana(str7)
Console.WriteLine(ret7)
'"あぼかど"と表示される
}}
#code(csharp){{
//半角カタカナをひらがなに変換する
string str1 = "アボカド";
string ret1 = Microsoft.International.Converters.
KanaConverter.HalfwidthKatakanaToHiragana(str1);
Console.WriteLine(ret1);
//"あぼかど"と表示される
//半角カタカナをカタカナに変換する
string str2 = "アボカド";
string ret2 = Microsoft.International.Converters.
KanaConverter.HalfwidthKatakanaToKatakana(str2);
Console.WriteLine(ret2);
//"アボカド"と表示される
//ひらがなを半角カタカナに変換する
string str3 = "あぼかど";
string ret3 = Microsoft.International.Converters.
KanaConverter.HiraganaToHalfwidthKatakana(str3);
Console.WriteLine(ret3);
//"アボカド"と表示される
//ひらがなをカタカナに変換する
string str4 = "あぼかど";
string ret4 = Microsoft.International.Converters.
KanaConverter.HiraganaToKatakana(str4);
Console.WriteLine(ret4);
//"アボカド"と表示される
//カタカナを半角カタカナに変換する
string str5 = "アボカド";
string ret5 = Microsoft.International.Converters.
KanaConverter.KatakanaToHalfwidthKatakana(str5);
Console.WriteLine(ret5);
//"アボカド"と表示される
//カタカナをひらがなに変換する
string str6 = "アボカド";
string ret6 = Microsoft.International.Converters.
KanaConverter.KatakanaToHiragana(str6);
Console.WriteLine(ret6);
//"あぼかど"と表示される
//ローマ字をひらがなに変換する
string str7 = "abokado";
string ret7 = Microsoft.International.Converters.
KanaConverter.RomajiToHiragana(str7);
Console.WriteLine(ret7);
//"あぼかど"と表示される
}}
***RomajiToHiraganaメソッド [#aff702b0]
RomajiToHiraganaメソッドで変換されるローマ字の規則は、IME...
なお、RomajiToHiraganaメソッドが用いる変換表は、ヘルプのR...
***VB.NETのStrConv関数との違い [#jf6c2975]
VB.NETのStrConv関数でも、全角と半角の変換や、ひらがなとカ...
「[[ディベロッパー製品開発統括部 Blog : KanaConverterの使...
#code(vbnet){{
Dim str1 As String = "か" & [Char].ConvertFromUtf32(&H3099)
'StrConvでカタカナに変換
Dim ret1 As String = StrConv(str1, VbStrConv.Katakana, &H...
Console.WriteLine(ret1)
'"カ?"と表示される
'KanaConverterでカタカナに変換
Dim ret2 As String = Microsoft.International.Converters.K...
HiraganaToKatakana(str1)
Console.WriteLine(ret2)
'"ガ"と表示される
}}
#code(csharp){{
//注意: 参照設定に"Microsoft.VisualBasic.dll"を追加する必...
string str1 = "か" + Char.ConvertFromUtf32(0x3099);
//StrConvでカタカナに変換
string ret1 = Microsoft.VisualBasic.Strings.StrConv(
str1, Microsoft.VisualBasic.VbStrConv.Katakana, 0x411);
Console.WriteLine(ret1);
//"カ?"と表示される
//KanaConverterでカタカナに変換
string ret2 = Microsoft.International.Converters.
KanaConverter.HiraganaToKatakana(str1);
Console.WriteLine(ret2);
//"ガ"と表示される
}}
一方単独の全角の濁点である「゛」(U+309B)と半濁点である...
半角の濁点である「゙」(U+FF9E)と半濁点である「゚」(U+FF9...
また、KanaConverterクラスではカタカナの"ヷヺ"...
その他、半角カナである「。「」、・ー」の全角への変換は、StrConv...
**KanaConverterクラスの不具合と回避法 [#z79fee58]
KanaConverterクラスを使った変換は、後述するTransliteralCo...
なお下の説明で、例えば「"ウカキクケコサシスセソタチツテトワヲ"の後に...」と...
***HalfwidthKatakanaToHiraganaメソッド [#l4ea6af2]
-"ウカキクケコサシスセソタチツテトワヲ"の後に"゚"が来ると文字が消える。
-"ワヲ"の後に"゙\U3099"が来ると文字が消える。
***HalfwidthKatakanaToKatakanaメソッド [#q76721ad]
-"ウカキクケコサシスセソタチツテトワヲ"の後に"゚"が来ると文字が消える。
***HiraganaToHalfwidthKatakanaメソッド [#pfd3a063]
-"うかきくけこさしすせそたちつてとわを"の後に"はひふへほ"...
-"はひふへほ"の後に"うかきくけこさしすせそたちつてとわを"...
-"ヴ"を半角に変換してしまう。(私が知らないだけで、ひらが...
-不具合は生じないが、"ゐゑゝゞ\U3095\U3096"(\U3095と\U30...
***HiraganaToKatakanaメソッド [#n56e49d1]
-"うかきくけこさしすせそたちつてとわゐゑをゝ"の後に"はひ...
-不具合は生じないが、"ヴ"を"ヴ"に変換している。(ひらがな...
***KatakanaToHalfwidthKatakanaメソッド [#d81ac235]
-"ウカキクケコサシスセソタチツテトワヲ"の後に"ハヒフヘホ"...
-"ハヒフヘホ"の後に"ウカキクケコサシスセソタチツテトワヲ"...
***KatakanaToHiraganaメソッド [#nd4837d2]
-"ウカキクケコサシスセソタチツテトヽ"の後に"ハヒフヘホ"が...
-"ハヒフヘホ"の後に"ウカキクケコサシスセソタチツテトヽ"が...
-不具合ではなく仕様だと思うが、"ヷヺ"を変換し...
***RomajiToHiraganaメソッド [#i5e1675f]
設定が複雑すぎるため、調べていません。
***修正した構成ファイル [#yba8a063]
上記の不具合を修正したXMLファイルを下に置いておきます(仕...
|メソッド名|ファイル名|h
|HalfwidthKatakanaToHiragana|&ref(HalfwidthKatakanaToHira...
|HalfwidthKatakanaToKatakana|&ref(HalfwidthKatakanaToKata...
|HiraganaToHalfwidthKatakana|&ref(HiraganaToHalfwidthKata...
|HiraganaToKatakana|&ref(HiraganaToKatakana.xml);|
|KatakanaToHalfwidthKatakana|&ref(KatakanaToHalfwidthKata...
|KatakanaToHiragana|&ref(KatakanaToHiragana.xml);|
**TransliteralConverterクラス [#x18c1335]
注意:TransliteralConverterクラスの使い方については、情報...
TransliteralConverterクラスでは、XMLで記述された設定に従...
TransliteralConverterクラスで使用するXMLのスキーマは以下...
#pre{{
<AutoConverterConfig>
<StateMachineConfig>
<State>
<StateTransition>
<InputValidatiors>
<Regex>
<Actions>
<Action>
<ConversionTable>
<Conversion>
}}
各要素の意味は、次の通りです。(ヘルプを基に、一部改変、...
#insertblock(StateMachineConfig){{
|属性|説明|h
|EntryState|エントリ状態(スタート状態のID)を指定します。|
|CharSet|変換できる有効な文字をすべて指定します。(スター...
}}
#insertblock(State){{
|属性|説明|h
|ID|状態の一意のIDを指定します。|
}}
#insertblock(StateTransition){{
|属性|説明|h
|ID|次の状態のIDを指定します。同じIDのStateTransitionが複...
}}
#insertblock(Conversion){{
|属性|説明|h
|Input|変換元の文字列です。大文字と小文字を区別しません。|
|Output|変換後の文字列です。|
}}
#insertblock(Actions){{
|動作|説明|h
|Append(char)|"char"で指定されている文字をバッファの末尾...
|AppendInput|現在の入力文字をバッファの末尾に追加します。|
|ConvertToOutput|バッファの文字をConversionTableを基に変...
|Clear|バッファをクリアします。|
}}
#insertblock(,%){{
|要素|意味|h
|AutoConverterConfig|構成ファイルのルート要素です。|
|StateMachineConfig|状態マシンの構成です。%StateMachineCo...
|State|状態マシンの状態です。%State%|
|StateTransition|今の状態から別の状態へ変更します。%State...
|InputValidators|入力チェック用の複数の正規表現です。現在...
|Regex|入力チェック用正規表現です。|
|Actions|状態マシンが実行する複数の動作です。|
|Actions|状態マシンがバッファに対して実行するひとつの動作...
|ConversionTable|<Conversion>要素を含んでいます。|
|Conversion|変換元のユニットと変換先の文字セットを表示す...
&shiftnote(nohr);
}}
XMLの設定を使ってTransliteralConverterクラスがどのように...
+現在の状態をStateMachineConfig要素のEntryState属性で指定...
+入力ストリームから次の1文字を取得し、現在の文字とする。...
+現在の状態と同じID属性を持つState要素内にあるStateTransi...
+この部分で何をしているか、詳細は不明。だが、大体以下のよ...
++バッファが空ならば、現在の文字をそのまま出力して1.に戻...
++バッファが空でなければ、そのはじめの文字をConversionTab...
++バッファの先頭の文字を削除した文字列を現在の文字の前に...
+Actions要素で指定されている動作を実行する。Actionsでは、...
+現在の状態を、StateTransition要素のID属性で指定されてい...
+2.に戻る。
&shiftnote(nohr);
***最も単純な変換の例: 文字を文字列に変換する [#g1ff9ab6]
まずは最も簡単な変換の例を示します。ここでは、「aiueo」を...
まずは次のようなXMLファイル(構成ファイル)を作成します。...
#code(xml){{
<?xml version="1.0" encoding="utf-8" ?>
<AutoConverterConfig>
<StateMachineConfig EntryState="0" CharSet="[aiueo]">
<State ID="0">
<StateTransition ID="0">
<InputValidators>
<Regex>[aiueo]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
<Action>ConvertToOutput</Action>
<Action>Clear</Action>
</Actions>
</StateTransition>
</State>
</StateMachineConfig>
<ConversionTable>
<Conversion Input="a" Output="あ"/>
<Conversion Input="i" Output="い"/>
<Conversion Input="u" Output="う"/>
<Conversion Input="e" Output="え"/>
<Conversion Input="o" Output="お"/>
</ConversionTable>
</AutoConverterConfig>
}}
"aiueo"のいずれかの文字が見つかれば、<StateTransition ID=...
この設定を使って変換を実行するには、次のようにします。
#code(vbnet){{
'変換する文字列
Dim input As String = "abcde"
Dim reader As System.IO.TextReader = New System.IO.String...
'出力先
Dim writer As System.IO.TextWriter = New System.IO.String...
'TransliteralConverterの作成
Dim converter As New Microsoft.International.Converters.T...
reader, writer)
'全てのデータを変換する
converter.Run()
'結果を表示する
Console.WriteLine(writer.ToString())
'"あbcdえ"と表示される
'後始末
reader.Dispose()
writer.Dispose()
}}
#code(csharp){{
//変換する文字列
string input = "abcde";
System.IO.TextReader reader = new System.IO.StringReader(...
//出力先
System.IO.TextWriter writer = new System.IO.StringWriter();
//TransliteralConverterの作成
Microsoft.International.Converters.TransliteralConverter ...
new Microsoft.International.Converters.TransliteralCo...
//全てのデータを変換する
converter.Run();
//結果を表示する
Console.WriteLine(writer.ToString());
//"あbcdえ"と表示される
//後始末
reader.Dispose();
writer.Dispose();
}}
ここではXMLファイルの名前を"TransliteralConverter.xml"と...
***複数の状態を使用する例: 2つの文字を文字列に変換する [#...
次はもう少し複雑な例です。2つの文字を文字列に変換します。...
ここでは、「aiueo」を「あいうえお」に変換するのに加え、「...
"TransliteralConverter.xml"を次のように書き換えます。
#code(xnl){{
<?xml version="1.0" encoding="utf-8" ?>
<AutoConverterConfig>
<StateMachineConfig EntryState="0" CharSet="[aiueok]">
<State ID="0">
<StateTransition ID="0">
<InputValidators>
<Regex>[aiueo]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
<Action>ConvertToOutput</Action>
<Action>Clear</Action>
</Actions>
</StateTransition>
<StateTransition ID="1">
<InputValidators>
<Regex>[k]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
</Actions>
</StateTransition>
</State>
<State ID="1">
<StateTransition ID="0">
<InputValidators>
<Regex>[aiueo]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
<Action>ConvertToOutput</Action>
<Action>Clear</Action>
</Actions>
</StateTransition>
</State>
</StateMachineConfig>
<ConversionTable>
<Conversion Input="a" Output="あ"/>
<Conversion Input="i" Output="い"/>
<Conversion Input="u" Output="う"/>
<Conversion Input="e" Output="え"/>
<Conversion Input="o" Output="お"/>
<Conversion Input="ka" Output="か"/>
<Conversion Input="ki" Output="き"/>
<Conversion Input="ku" Output="く"/>
<Conversion Input="ke" Output="け"/>
<Conversion Input="ko" Output="こ"/>
</ConversionTable>
</AutoConverterConfig>
}}
前の例と比較して、状態が2つに増えて<State ID="1">が加わっ...
例えば"ka"という文字を変換するケースを考えてみましょう。...
次に"a"という文字が<State ID="1">(現在の状態が"1"なので...
この設定を使って実際に変換する例は先ほどのコードと同じで...
***おまけの例: 同じ文字が2つ続くか調べる [#i90bc3c1]
最後にもう一つ例を紹介します。ここではさらに、「kkakkikku...
#code(xml){{
<?xml version="1.0" encoding="utf-8" ?>
<AutoConverterConfig>
<StateMachineConfig EntryState="0" CharSet="[aiueok]">
<State ID="0">
<StateTransition ID="0">
<InputValidators>
<Regex>[aiueo]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
<Action>ConvertToOutput</Action>
<Action>Clear</Action>
</Actions>
</StateTransition>
<StateTransition ID="1">
<InputValidators>
<Regex>[k]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
</Actions>
</StateTransition>
</State>
<State ID="1">
<StateTransition ID="0">
<InputValidators>
<Regex>[aiueo]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
<Action>ConvertToOutput</Action>
<Action>Clear</Action>
</Actions>
</StateTransition>
<StateTransition ID="1">
<InputValidators>
<Regex>[#History(-1)#]</Regex>
<Regex>[^#History(-2)#]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
</Actions>
</StateTransition>
</State>
</StateMachineConfig>
<ConversionTable>
<Conversion Input="a" Output="あ"/>
<Conversion Input="i" Output="い"/>
<Conversion Input="u" Output="う"/>
<Conversion Input="e" Output="え"/>
<Conversion Input="o" Output="お"/>
<Conversion Input="ka" Output="か"/>
<Conversion Input="ki" Output="き"/>
<Conversion Input="ku" Output="く"/>
<Conversion Input="ke" Output="け"/>
<Conversion Input="ko" Output="こ"/>
<Conversion Input="kka" Output="っか"/>
<Conversion Input="kki" Output="っき"/>
<Conversion Input="kku" Output="っく"/>
<Conversion Input="kke" Output="っけ"/>
<Conversion Input="kko" Output="っこ"/>
</ConversionTable>
</AutoConverterConfig>
}}
ここでは、<State ID="1"><StateTransition ID="1"><InputVal...
この設定で"kkka"という文字を変換すると、"kっか"となります。
**おまけの構成ファイル [#y2a2890d]
***半角カナを全角に変換する [#r1cdb204]
KanaConverter.HalfwidthKatakanaToKatakanaメソッドでは、半...
#ref(HankakukanaToZenkaku.xml)
**参考 [#pd397479]
-[[ローマ字>Wikipedia:ローマ字]]
-[[ローマ字かな変換>Wikipedia:ローマ字かな変換]]
-[[半角カナ>Wikipedia:半角カナ]]
**コメント [#jb0679f4]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]] [[:Category/ASP.NET]],2008-1...
終了行:
#title(Visual Studio International Pack: Japanese Kana Co...
#navi(.NETプログラミング研究)
#contents
*Visual Studio International Pack: Japanese Kana Conversi...
**Visual Studio International Packとは? [#qd83a81b]
Visual Studio International Packはマイクロソフトが配布し...
現在のバージョンである1.0では、以下の7つの機能を提供しま...
-East Asia Numeric Formatting Library(東アジアのための数...
East Asia Numeric Formatting Libraryは数値データを日本語...
-Japanese Kana Conversion Library(日本語かな変換ライブラ...
かな文字セットを別のかな文字セットに変換するための一連の...
-Japanese Text Alignment Library(日本語テキスト整列ライ...
日本固有の均等割付を用いて文字列を描画するためのライブラ...
-Japanese Yomi Auto-Completion Library(日本語読みがなオ...
日本語IME における読みの入力に対応したオートコンプリート...
-Korean Auto Complete TextBox Control(韓国語オートコンプ...
韓国語入力に対応したオートコンプリート機能を持つTextBox ...
-Simplified Chinese Pin-Yin Conversion Library(簡体字中...
簡体字中国語で一般的に用いられるPolyphone、Homophone、Pin...
-Traditional Chinese to Simplified Chinese Conversion Lib...
繁体字中国語と簡体字中国語の間の双方向変換を容易にするク...
Visual Studio International Pack 1.0のシステム要件は以下...
-Microsoft Visual Studio 2005 または Microsoft Visual Stu...
-Microsoft Office 2007~
Traditional to Simplified Chinese Conversion Library and ...
この内、今回は、Japanese Kana Conversion Library(日本語...
**ダウンロードとインストール [#j7703ae1]
Japanese Kana Conversion Libraryをインストールする手順は...
+「[[Microsoft Visual Studio International Pack 1.0 ダウ...
+vsintlpack1.zipを展開する。
+7つのmsiファイルが出来るが、"JPNKanaConv.msi"を実行し、...
+プログラムメニューの「Microsoft Visual Studio Internatio...
**参照の追加 [#s794b7fe]
インストールしたライブラリを使用するには、「JpnKanaConver...
DLLを参照に追加する具体的な方法は、「[[「○○○.dllを参照に...
**Japanese Kana Conversion Libraryの機能 [#v6e6dfdf]
Japanese Kana Conversion Libraryは大きく分けて2つの機能を...
**KanaConverterクラス [#e61c370d]
KanaConverterクラスには次の7つの静的メソッドがあります。
|メソッド名|説明|h
|HalfwidthKatakanaToHiragana|半角カタカナからひらがなへ文...
|HalfwidthKatakanaToKatakana|半角カタカナからカタカナへ文...
|HiraganaToHalfwidthKatakana|ひらがなから半角カタカナへ文...
|HiraganaToKatakana|ひらがなからカタカナへ文字を変換しま...
|KatakanaToHalfwidthKatakana|カタカナから半角カタカナへ文...
|KatakanaToHiragana|カタカナからひらがなへ文字を変換しま...
|RomajiToHiragana|ローマ字からひらがなへ文字を変換します。|
ぞれぞれのメソッドを使用した例を以下に示します。
#code(vbnet){{
'半角カタカナをひらがなに変換する
Dim str1 As String = "アボカド"
Dim ret1 As String = Microsoft.International.Converters.K...
HalfwidthKatakanaToHiragana(str1)
Console.WriteLine(ret1)
'"あぼかど"と表示される
'半角カタカナをカタカナに変換する
Dim str2 As String = "アボカド"
Dim ret2 As String = Microsoft.International.Converters.K...
HalfwidthKatakanaToKatakana(str2)
Console.WriteLine(ret2)
'"アボカド"と表示される
'ひらがなを半角カタカナに変換する
Dim str3 As String = "あぼかど"
Dim ret3 As String = Microsoft.International.Converters.K...
HiraganaToHalfwidthKatakana(str3)
Console.WriteLine(ret3)
'"アボカド"と表示される
'ひらがなをカタカナに変換する
Dim str4 As String = "あぼかど"
Dim ret4 As String = Microsoft.International.Converters.K...
HiraganaToKatakana(str4)
Console.WriteLine(ret4)
'"アボカド"と表示される
'カタカナを半角カタカナに変換する
Dim str5 As String = "アボカド"
Dim ret5 As String = Microsoft.International.Converters.K...
KatakanaToHalfwidthKatakana(str5)
Console.WriteLine(ret5)
'"アボカド"と表示される
'カタカナをひらがなに変換する
Dim str6 As String = "アボカド"
Dim ret6 As String = Microsoft.International.Converters.K...
KatakanaToHiragana(str6)
Console.WriteLine(ret6)
'"あぼかど"と表示される
'ローマ字をひらがなに変換する
Dim str7 As String = "abokado"
Dim ret7 As String = Microsoft.International.Converters.K...
RomajiToHiragana(str7)
Console.WriteLine(ret7)
'"あぼかど"と表示される
}}
#code(csharp){{
//半角カタカナをひらがなに変換する
string str1 = "アボカド";
string ret1 = Microsoft.International.Converters.
KanaConverter.HalfwidthKatakanaToHiragana(str1);
Console.WriteLine(ret1);
//"あぼかど"と表示される
//半角カタカナをカタカナに変換する
string str2 = "アボカド";
string ret2 = Microsoft.International.Converters.
KanaConverter.HalfwidthKatakanaToKatakana(str2);
Console.WriteLine(ret2);
//"アボカド"と表示される
//ひらがなを半角カタカナに変換する
string str3 = "あぼかど";
string ret3 = Microsoft.International.Converters.
KanaConverter.HiraganaToHalfwidthKatakana(str3);
Console.WriteLine(ret3);
//"アボカド"と表示される
//ひらがなをカタカナに変換する
string str4 = "あぼかど";
string ret4 = Microsoft.International.Converters.
KanaConverter.HiraganaToKatakana(str4);
Console.WriteLine(ret4);
//"アボカド"と表示される
//カタカナを半角カタカナに変換する
string str5 = "アボカド";
string ret5 = Microsoft.International.Converters.
KanaConverter.KatakanaToHalfwidthKatakana(str5);
Console.WriteLine(ret5);
//"アボカド"と表示される
//カタカナをひらがなに変換する
string str6 = "アボカド";
string ret6 = Microsoft.International.Converters.
KanaConverter.KatakanaToHiragana(str6);
Console.WriteLine(ret6);
//"あぼかど"と表示される
//ローマ字をひらがなに変換する
string str7 = "abokado";
string ret7 = Microsoft.International.Converters.
KanaConverter.RomajiToHiragana(str7);
Console.WriteLine(ret7);
//"あぼかど"と表示される
}}
***RomajiToHiraganaメソッド [#aff702b0]
RomajiToHiraganaメソッドで変換されるローマ字の規則は、IME...
なお、RomajiToHiraganaメソッドが用いる変換表は、ヘルプのR...
***VB.NETのStrConv関数との違い [#jf6c2975]
VB.NETのStrConv関数でも、全角と半角の変換や、ひらがなとカ...
「[[ディベロッパー製品開発統括部 Blog : KanaConverterの使...
#code(vbnet){{
Dim str1 As String = "か" & [Char].ConvertFromUtf32(&H3099)
'StrConvでカタカナに変換
Dim ret1 As String = StrConv(str1, VbStrConv.Katakana, &H...
Console.WriteLine(ret1)
'"カ?"と表示される
'KanaConverterでカタカナに変換
Dim ret2 As String = Microsoft.International.Converters.K...
HiraganaToKatakana(str1)
Console.WriteLine(ret2)
'"ガ"と表示される
}}
#code(csharp){{
//注意: 参照設定に"Microsoft.VisualBasic.dll"を追加する必...
string str1 = "か" + Char.ConvertFromUtf32(0x3099);
//StrConvでカタカナに変換
string ret1 = Microsoft.VisualBasic.Strings.StrConv(
str1, Microsoft.VisualBasic.VbStrConv.Katakana, 0x411);
Console.WriteLine(ret1);
//"カ?"と表示される
//KanaConverterでカタカナに変換
string ret2 = Microsoft.International.Converters.
KanaConverter.HiraganaToKatakana(str1);
Console.WriteLine(ret2);
//"ガ"と表示される
}}
一方単独の全角の濁点である「゛」(U+309B)と半濁点である...
半角の濁点である「゙」(U+FF9E)と半濁点である「゚」(U+FF9...
また、KanaConverterクラスではカタカナの"ヷヺ"...
その他、半角カナである「。「」、・ー」の全角への変換は、StrConv...
**KanaConverterクラスの不具合と回避法 [#z79fee58]
KanaConverterクラスを使った変換は、後述するTransliteralCo...
なお下の説明で、例えば「"ウカキクケコサシスセソタチツテトワヲ"の後に...」と...
***HalfwidthKatakanaToHiraganaメソッド [#l4ea6af2]
-"ウカキクケコサシスセソタチツテトワヲ"の後に"゚"が来ると文字が消える。
-"ワヲ"の後に"゙\U3099"が来ると文字が消える。
***HalfwidthKatakanaToKatakanaメソッド [#q76721ad]
-"ウカキクケコサシスセソタチツテトワヲ"の後に"゚"が来ると文字が消える。
***HiraganaToHalfwidthKatakanaメソッド [#pfd3a063]
-"うかきくけこさしすせそたちつてとわを"の後に"はひふへほ"...
-"はひふへほ"の後に"うかきくけこさしすせそたちつてとわを"...
-"ヴ"を半角に変換してしまう。(私が知らないだけで、ひらが...
-不具合は生じないが、"ゐゑゝゞ\U3095\U3096"(\U3095と\U30...
***HiraganaToKatakanaメソッド [#n56e49d1]
-"うかきくけこさしすせそたちつてとわゐゑをゝ"の後に"はひ...
-不具合は生じないが、"ヴ"を"ヴ"に変換している。(ひらがな...
***KatakanaToHalfwidthKatakanaメソッド [#d81ac235]
-"ウカキクケコサシスセソタチツテトワヲ"の後に"ハヒフヘホ"...
-"ハヒフヘホ"の後に"ウカキクケコサシスセソタチツテトワヲ"...
***KatakanaToHiraganaメソッド [#nd4837d2]
-"ウカキクケコサシスセソタチツテトヽ"の後に"ハヒフヘホ"が...
-"ハヒフヘホ"の後に"ウカキクケコサシスセソタチツテトヽ"が...
-不具合ではなく仕様だと思うが、"ヷヺ"を変換し...
***RomajiToHiraganaメソッド [#i5e1675f]
設定が複雑すぎるため、調べていません。
***修正した構成ファイル [#yba8a063]
上記の不具合を修正したXMLファイルを下に置いておきます(仕...
|メソッド名|ファイル名|h
|HalfwidthKatakanaToHiragana|&ref(HalfwidthKatakanaToHira...
|HalfwidthKatakanaToKatakana|&ref(HalfwidthKatakanaToKata...
|HiraganaToHalfwidthKatakana|&ref(HiraganaToHalfwidthKata...
|HiraganaToKatakana|&ref(HiraganaToKatakana.xml);|
|KatakanaToHalfwidthKatakana|&ref(KatakanaToHalfwidthKata...
|KatakanaToHiragana|&ref(KatakanaToHiragana.xml);|
**TransliteralConverterクラス [#x18c1335]
注意:TransliteralConverterクラスの使い方については、情報...
TransliteralConverterクラスでは、XMLで記述された設定に従...
TransliteralConverterクラスで使用するXMLのスキーマは以下...
#pre{{
<AutoConverterConfig>
<StateMachineConfig>
<State>
<StateTransition>
<InputValidatiors>
<Regex>
<Actions>
<Action>
<ConversionTable>
<Conversion>
}}
各要素の意味は、次の通りです。(ヘルプを基に、一部改変、...
#insertblock(StateMachineConfig){{
|属性|説明|h
|EntryState|エントリ状態(スタート状態のID)を指定します。|
|CharSet|変換できる有効な文字をすべて指定します。(スター...
}}
#insertblock(State){{
|属性|説明|h
|ID|状態の一意のIDを指定します。|
}}
#insertblock(StateTransition){{
|属性|説明|h
|ID|次の状態のIDを指定します。同じIDのStateTransitionが複...
}}
#insertblock(Conversion){{
|属性|説明|h
|Input|変換元の文字列です。大文字と小文字を区別しません。|
|Output|変換後の文字列です。|
}}
#insertblock(Actions){{
|動作|説明|h
|Append(char)|"char"で指定されている文字をバッファの末尾...
|AppendInput|現在の入力文字をバッファの末尾に追加します。|
|ConvertToOutput|バッファの文字をConversionTableを基に変...
|Clear|バッファをクリアします。|
}}
#insertblock(,%){{
|要素|意味|h
|AutoConverterConfig|構成ファイルのルート要素です。|
|StateMachineConfig|状態マシンの構成です。%StateMachineCo...
|State|状態マシンの状態です。%State%|
|StateTransition|今の状態から別の状態へ変更します。%State...
|InputValidators|入力チェック用の複数の正規表現です。現在...
|Regex|入力チェック用正規表現です。|
|Actions|状態マシンが実行する複数の動作です。|
|Actions|状態マシンがバッファに対して実行するひとつの動作...
|ConversionTable|<Conversion>要素を含んでいます。|
|Conversion|変換元のユニットと変換先の文字セットを表示す...
&shiftnote(nohr);
}}
XMLの設定を使ってTransliteralConverterクラスがどのように...
+現在の状態をStateMachineConfig要素のEntryState属性で指定...
+入力ストリームから次の1文字を取得し、現在の文字とする。...
+現在の状態と同じID属性を持つState要素内にあるStateTransi...
+この部分で何をしているか、詳細は不明。だが、大体以下のよ...
++バッファが空ならば、現在の文字をそのまま出力して1.に戻...
++バッファが空でなければ、そのはじめの文字をConversionTab...
++バッファの先頭の文字を削除した文字列を現在の文字の前に...
+Actions要素で指定されている動作を実行する。Actionsでは、...
+現在の状態を、StateTransition要素のID属性で指定されてい...
+2.に戻る。
&shiftnote(nohr);
***最も単純な変換の例: 文字を文字列に変換する [#g1ff9ab6]
まずは最も簡単な変換の例を示します。ここでは、「aiueo」を...
まずは次のようなXMLファイル(構成ファイル)を作成します。...
#code(xml){{
<?xml version="1.0" encoding="utf-8" ?>
<AutoConverterConfig>
<StateMachineConfig EntryState="0" CharSet="[aiueo]">
<State ID="0">
<StateTransition ID="0">
<InputValidators>
<Regex>[aiueo]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
<Action>ConvertToOutput</Action>
<Action>Clear</Action>
</Actions>
</StateTransition>
</State>
</StateMachineConfig>
<ConversionTable>
<Conversion Input="a" Output="あ"/>
<Conversion Input="i" Output="い"/>
<Conversion Input="u" Output="う"/>
<Conversion Input="e" Output="え"/>
<Conversion Input="o" Output="お"/>
</ConversionTable>
</AutoConverterConfig>
}}
"aiueo"のいずれかの文字が見つかれば、<StateTransition ID=...
この設定を使って変換を実行するには、次のようにします。
#code(vbnet){{
'変換する文字列
Dim input As String = "abcde"
Dim reader As System.IO.TextReader = New System.IO.String...
'出力先
Dim writer As System.IO.TextWriter = New System.IO.String...
'TransliteralConverterの作成
Dim converter As New Microsoft.International.Converters.T...
reader, writer)
'全てのデータを変換する
converter.Run()
'結果を表示する
Console.WriteLine(writer.ToString())
'"あbcdえ"と表示される
'後始末
reader.Dispose()
writer.Dispose()
}}
#code(csharp){{
//変換する文字列
string input = "abcde";
System.IO.TextReader reader = new System.IO.StringReader(...
//出力先
System.IO.TextWriter writer = new System.IO.StringWriter();
//TransliteralConverterの作成
Microsoft.International.Converters.TransliteralConverter ...
new Microsoft.International.Converters.TransliteralCo...
//全てのデータを変換する
converter.Run();
//結果を表示する
Console.WriteLine(writer.ToString());
//"あbcdえ"と表示される
//後始末
reader.Dispose();
writer.Dispose();
}}
ここではXMLファイルの名前を"TransliteralConverter.xml"と...
***複数の状態を使用する例: 2つの文字を文字列に変換する [#...
次はもう少し複雑な例です。2つの文字を文字列に変換します。...
ここでは、「aiueo」を「あいうえお」に変換するのに加え、「...
"TransliteralConverter.xml"を次のように書き換えます。
#code(xnl){{
<?xml version="1.0" encoding="utf-8" ?>
<AutoConverterConfig>
<StateMachineConfig EntryState="0" CharSet="[aiueok]">
<State ID="0">
<StateTransition ID="0">
<InputValidators>
<Regex>[aiueo]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
<Action>ConvertToOutput</Action>
<Action>Clear</Action>
</Actions>
</StateTransition>
<StateTransition ID="1">
<InputValidators>
<Regex>[k]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
</Actions>
</StateTransition>
</State>
<State ID="1">
<StateTransition ID="0">
<InputValidators>
<Regex>[aiueo]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
<Action>ConvertToOutput</Action>
<Action>Clear</Action>
</Actions>
</StateTransition>
</State>
</StateMachineConfig>
<ConversionTable>
<Conversion Input="a" Output="あ"/>
<Conversion Input="i" Output="い"/>
<Conversion Input="u" Output="う"/>
<Conversion Input="e" Output="え"/>
<Conversion Input="o" Output="お"/>
<Conversion Input="ka" Output="か"/>
<Conversion Input="ki" Output="き"/>
<Conversion Input="ku" Output="く"/>
<Conversion Input="ke" Output="け"/>
<Conversion Input="ko" Output="こ"/>
</ConversionTable>
</AutoConverterConfig>
}}
前の例と比較して、状態が2つに増えて<State ID="1">が加わっ...
例えば"ka"という文字を変換するケースを考えてみましょう。...
次に"a"という文字が<State ID="1">(現在の状態が"1"なので...
この設定を使って実際に変換する例は先ほどのコードと同じで...
***おまけの例: 同じ文字が2つ続くか調べる [#i90bc3c1]
最後にもう一つ例を紹介します。ここではさらに、「kkakkikku...
#code(xml){{
<?xml version="1.0" encoding="utf-8" ?>
<AutoConverterConfig>
<StateMachineConfig EntryState="0" CharSet="[aiueok]">
<State ID="0">
<StateTransition ID="0">
<InputValidators>
<Regex>[aiueo]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
<Action>ConvertToOutput</Action>
<Action>Clear</Action>
</Actions>
</StateTransition>
<StateTransition ID="1">
<InputValidators>
<Regex>[k]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
</Actions>
</StateTransition>
</State>
<State ID="1">
<StateTransition ID="0">
<InputValidators>
<Regex>[aiueo]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
<Action>ConvertToOutput</Action>
<Action>Clear</Action>
</Actions>
</StateTransition>
<StateTransition ID="1">
<InputValidators>
<Regex>[#History(-1)#]</Regex>
<Regex>[^#History(-2)#]</Regex>
</InputValidators>
<Actions>
<Action>AppendInput</Action>
</Actions>
</StateTransition>
</State>
</StateMachineConfig>
<ConversionTable>
<Conversion Input="a" Output="あ"/>
<Conversion Input="i" Output="い"/>
<Conversion Input="u" Output="う"/>
<Conversion Input="e" Output="え"/>
<Conversion Input="o" Output="お"/>
<Conversion Input="ka" Output="か"/>
<Conversion Input="ki" Output="き"/>
<Conversion Input="ku" Output="く"/>
<Conversion Input="ke" Output="け"/>
<Conversion Input="ko" Output="こ"/>
<Conversion Input="kka" Output="っか"/>
<Conversion Input="kki" Output="っき"/>
<Conversion Input="kku" Output="っく"/>
<Conversion Input="kke" Output="っけ"/>
<Conversion Input="kko" Output="っこ"/>
</ConversionTable>
</AutoConverterConfig>
}}
ここでは、<State ID="1"><StateTransition ID="1"><InputVal...
この設定で"kkka"という文字を変換すると、"kっか"となります。
**おまけの構成ファイル [#y2a2890d]
***半角カナを全角に変換する [#r1cdb204]
KanaConverter.HalfwidthKatakanaToKatakanaメソッドでは、半...
#ref(HankakukanaToZenkaku.xml)
**参考 [#pd397479]
-[[ローマ字>Wikipedia:ローマ字]]
-[[ローマ字かな変換>Wikipedia:ローマ字かな変換]]
-[[半角カナ>Wikipedia:半角カナ]]
**コメント [#jb0679f4]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]] [[:Category/ASP.NET]],2008-1...
ページ名:
▲
▼
[
トップ
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]