DOBON.NET DOBON.NETプログラミング掲示板過去ログ

文字入れ替えの処理について

環境/言語:[XP3 VB2005]
分類:[.NET]

いわゆる暗号みたいな感じなのですが、文字列に「あいう」と入っていたら「111213」と変換するような物を作りたいと思っています。

あ→11 い→12 う→13

この場合一つ一つ要素を変換するコードを書かなければならないでしょうか?


textbox1.textに「あいうえお」と入っていたら、文字列を一文字ずつ分解して、Select Caseなどで文字を変換するというような感じでしょうか?




もっと簡潔にするコードの書き方があったような気がしたもので・・・

あ,い,う,え,お,か,き,く,け,こ,さ,し,す,せ,そ,た,と,つ,・・・・・・
11,12,13,14,15,16,17,18,19,20,21,22,23,・・・・・・・



使うとしたら、Split関数でしょうか?
■No27772に返信(ザナドゥさんの記事)

文字コードが割と連続しているのでその特性を利用するというのも1つの
方法かもしれません。ただ、『ぁ』、『あ』、『ぃ』、『い』・・・という
順番になっていることが多いのでその辺をどうするかです。
■No27772に返信(ザナドゥさんの記事)

Dim 変換前() As String = {"あ","い","う","え","お","か","き","く","け","こ",・・・・・・}
Dim 変換後() As String = {"11","12","13","14","15","16","17","18","19","20",・・・・・・・}
Dim 変換結果 As String

変換結果 = textbox1.text
For i = 0 To 変換前.Count - 1
  変換結果 = Replace(変換結果,変換前(i),変換後(i))
Next

といった感じで変換前の文字配列と変換後の文字配列で持って
ループで順番にPeplaceで置換していくのはどうでしょうか?
変換する文字の数にもよるとは思いますけど・・・
shuさん、まりもんさん、返信有り難うございます。


まりもんさん、.Count部分で「'Count' は 'System.Array' のメンバではありません。」とエラーが出てしまうのですが、これは.NET Framework 4.0用のコードでしょうか。

間違ってたらすみません。
2010/12/06(Mon) 15:35:16 編集(投稿者)
2010/12/06(Mon) 15:35:02 編集(投稿者)

すみません。
コードは雰囲気が分かるであろうと適当に書いた物なので
文法チェックや動作検証等はしていません。

変換前.Count - 1 → Ubound(変換前)
など変換前の配列を全てループで回すようにすれば大丈夫だと
思います。
配列では Count ではなく Length プロパティになります。
まりもんさん、じゃんぬねっとさん、有り難うございます。

御陰でやりたい事が出来ました。

教えて頂けなかったら、ひとつひとつ変換プログラムを書き、それだけで100行は超えていました。

助かりました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板