- - PR -
C#による半角⇔全角変換の方法は?
«前のページへ
1|2|3
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-12-27 17:50
たしかに・・・(汗) switch文だとEqualの繰り返し? 連想配列の場合はハッシュ値の取得?(Containsもあるので2度) 連想配列がマイブームなのでよく使っていますが、実際は内部でどういう仕組みになっているのか解っていないのです。 効率悪い・・・のかな? 余談ですが、すごい昔(20年ぐらい前)にFEPのコードを見たらswitch文のお化けだったのを思い出しました。 | ||||
|
投稿日時: 2005-12-27 18:07
StringBuilder に対して Append していくだけかなぁ。 もちろん、濁点の対応はしないといけませんが... (^^;) 馬鹿げている実装に見えますが、文字コード変換表を作る作業よりはマシだと思います。 アンマネージドでいいなら、API じゃなくて StrConv を素直に使うべきだと思いますね。 やっていることは同じでしょうから。 # Hashtable も、そういう意味で考えた場合はアリだと思いますよ。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-12-27 18:13
たくさん使うのなら、Hashtableが良いんじゃないでしょうか。
switchだと、先頭のcaseと最後のcaseで速度が変わってきて、 最後のほうだと高速とも言えなくなるんじゃないかと。 | ||||
|
投稿日時: 2005-12-27 19:10
StringBuilderよりもchar配列かなぁと思っていましたが、、、「濁点」ですか!!! すっかり忘れていました。Unicodeでの1:1置換ではないのですね。 私のコードでは未対応です。(英数専用) Unicode1文字と2文字が相互に変換されるなら、配列要素の入れ替えではなくStringBuilderになりますね。 需要が出たら対応します。それまで放置(だめじゃん)。^^; | ||||
|
投稿日時: 2005-12-27 21:10
たくさんの文字列を switch 文で比較すると、
Dictionary を使った実装に勝手に最適化されるみたいですね。 おもしろいです。 | ||||
|
投稿日時: 2005-12-31 19:08
実験したのに、反応するのを忘れてました。
詳細な数値は EULA の関係でお出しできませんので、抽象的に結果を報告します。 結果ですが予想通り、switch case の方が数倍高速でした。 (IL 解析をすると面白いです) VB の Select Case ですら、総合的に見て高速でした。 (非合致の場合 (Else Case) は若干 Hashtable の方が高速でした) [ シグネチャを削除 ] [ メッセージ編集済み 編集者: じゃんぬねっと 編集日時 2006-10-12 11:48 ] |
«前のページへ
1|2|3