- ベストアンサー
文字を数値に変換したい
現在、課題でVisualBasic2005を使用してプログラムを作成していますが、一点わからなくて困っています。 何か解決策があれば助けてください。 テキストボックスに文字を入力した際に、 数値に変換(例えば"あ"が入力されたら"1"、"い"だと"2"…etc)のように50音中のあ段は1、い段は2、う段は3…と変換したいのです。 ※テキストボックスは平仮名のみしか入力出来ないように制御してます。 If文で書くと50個プラス濁音・半濁音のプログラムを書くことになるためもっと効率の良い書き方がないかと思い投稿しました。 解決策があれば伝授をお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Select Caseステートメントを使えば良いかと思います。 Case文は、5段分で済みますので。
その他の回答 (2)
- nac03056
- ベストアンサー率48% (203/419)
何か関数で1行で出来ないかと考えたのですが、今手元に別VerのVBもないので、VBAで試してます。的外れでしたらごめんなさい。 理屈は、ひらがなをカタカナ変換して、アスキー変換することで濁点を排除し、さらにアスキーコード変換した値で連番を求め、5の剰余で、1から5までの番号を振れると考えました。 (Asc(StrConv(StrConv("あ", 16), 8)) - 177) Mod 5 + 1 これならカタカナにも対応でき、完璧かとうぬぼれたのですが、拗音、促音、「を」に関しては別の処理が必要になってしまいましたので、仕様的には失敗です。 同じifを使うなら、理解しにくいコードに何の価値もないですが、せっかくここまで考えたので載せました。失敗例の参考までに。 ちなみに、自分が仕事で必要だとしたらこの方法はおそらく使わず、堅実な ANo.1 ANo.2 の方法でいきます。(たぶん性格的に ANo.2 かな)
お礼
返信が遅くなり、申し訳ございません。 失敗例は、今後の課題を取り組んでいく上で 参考資料として助かるのでありがたいです。 わざわざありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
下記がロジック的に最短のコードとなるだろう。 文字列で"あいうえおかきくけこさしすせそ・・"を定義。 ラ行までは普通で。 濁音・半濁音は段数が合うように文字列の順序をうまく配置すること。先頭「あ」からの何番目か順番が大事。 「わ」以後は わ△△△を(次行が続く、以下同じ)△は空白とか出現しないはずの 文字を埋めること。 ん△△△△ ががぎぐげご ざじずぜぞ だぢづでど ばびぶべぼ ぱぴぷぺぽ このほかあれば追加。 これらをすべて続けて1本の文字列にする。 あとは例えば VBAでやると Sub test01() x = "あいうえおかきくけこさしすせそ" '実際は後が続く a = "え" p = InStr(x, a) MsgBox p MsgBox p Mod 5 End Sub Instrで位置を割り出し、5で割って剰余が段数を表すように 文字列を作る。 ーー NETで Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim x As String Dim a As String Dim p As Integer x = "あいうえおかきくけこさしすせそ" a = "き" p = x.IndexOf(a) MsgBox(p + 1) MsgBox((p + 1) Mod 5) End Sub 「き」の場合2になった。
お礼
このような方法もあるんですね!!!!! 全く思いも付かなかった方法なので参考になりました。 そしてワザワザ書き方まで載せて頂きありがとうございます。 興味が出たのでコチラでも試してみようと思います。 ありがとうございました★
お礼
Select Caseステートメントですね!!! 調べてみて使用してみます。 ありがとうございました★