• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBScript 全角英数記号→半角英数記号に)

VBScript全角英数記号を半角英数記号に変換する方法

このQ&Aのポイント
  • VBScriptで開発を行っている際に、全角英数記号を半角英数記号に変換する方法が知りたいです。
  • 現在、ASP(VBScript)を使用して開発を行っていますが、作成したメソッドでは全角カタカナも半角に変換されてしまいます。
  • 問題を回避するための解決策を教えていただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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

関連するQ&A