- ベストアンサー
VBScript全角英数記号を半角英数記号に変換する方法
- VBScriptで開発を行っている際に、全角英数記号を半角英数記号に変換する方法が知りたいです。
- 現在、ASP(VBScript)を使用して開発を行っていますが、作成したメソッドでは全角カタカナも半角に変換されてしまいます。
- 問題を回避するための解決策を教えていただけないでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
だったら関数を自作すれば? 所詮変換の方向が [全角]→[半角] なんだし、変換してもよい文字の一覧が質問者の頭の中にあるんだろうし。 泥臭いけれど、あらかじめ変換候補としている文字の一覧と、変換後イメージの一覧を持っておいて、対象文字列の先頭から順に一文字ずつ変換するって方法。 ' 変換してもよい文字の一覧 Const wideList = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-=_" ' 変換後の文字一覧(変換してもよい文字の一覧と同じ並び、同じ数にしておく) Const narrowList = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-=_" Dim src src = "Aあア1-ーBk_" ' これを変換する。あアー の3文字以外は変換したい。 Dim dest dest = conv(src) ' 変換する conv 関数を呼び出す WScript.Echo dest ' 変換前の文字列を受け取って、変換した文字列を返す Function conv(aSrc) Dim returnValue ' ソース文字列を 1文字ずつ取り出す Dim srcPos For srcPos = 1 To Len(aSrc) Dim hit hit = False ' 変換候補リストを 1文字ずつ取り出す Dim listPos For listPos = 1 To Len(wideList) ' 比較して変換候補リストにあればフラグを立てる If Mid(aSrc, srcPos, 1) = Mid(wideList, listPos, 1) Then hit = True Exit For End If Next ' フラグが立っていれば変換し、立っていなければソースの文字を使用する If hit Then returnValue = returnValue & Mid(narrowList, listPos, 1) Else returnValue = returnValue & Mid(aSrc, srcPos, 1) End If Next conv = returnValue End Function