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

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

VBScript 全角英数記号→半角英数記号に

ASP(VBScript)での開発をしています。 全角英数記号を、半角英数記号に変換したくて、以下のメソッドを 作りました。 Function FunFullToHalf(ByVal StrTarget) Dim ObjBASP21 Dim StrHalf Set ObjBASP21 = Server.CreateObject("basp21") StrHalf = ObjBASP21.StrConv(StrTarget,8) FunFullToHalf = StrTarget End Function しかし、これだと、全角カタカナまで半角になってしまい、困っています。 回避策を教えていただけないでしょうか。

  • ginfix
  • お礼率34% (330/962)

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

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

  • JSで全角英数記号を半角英数記号に。

    JavaScriptで、全角英数記号が含まれていたら、半角英数記号に したいと思っています。 たとえば、123456→123456といった具合です。 ネットを参考にしたのですが str.replace(/[A-Za-z0-9]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) - 65248); }); このロジックが近いのですが、英数字までです。 記号1つ1つ指定してreplaceではかなり手間ですよね…。 効率よく記号も半角英数にするにはどうすればよいでしょうか?

  • 記号は半角と全角どちらがよいのでしょうか?

    ホームページ作成時に半角カタカナは使わない方が良いという事ですが 記号は半角と全角どちらがよいのでしょうか? 例えば 、<{ (  などです。 半角と全角どちらがいいのでしょうか?

    • ベストアンサー
    • HTML
  • 全角から半角に変換する

    Javaで、文字列の中に全角があれば単純に半角に変換するような処理をしたいです。具体的には、次のような文字列があった場合、以下のように変換したいです。 <変更前> あ亜アアaaAA11%% <変更後> ア亜アアaaAA11%% つまり、以下のようにしたいです ・全角ひらがな→半角カタカナ ・漢字:何もしない ・全角カタカナ→半角カタカナ ・半角カタカナ:何もしない ・半角アルファベット→何もしない ・全角アルファベット→半角アルファベット ・半角数字→何もしない ・全角数字→半角数字 ・半角記号→何もしない ・全角記号→半角記号 上記のように書くと複雑に見えますが、要は基本的に半角に相当する文字がある場合には半角にしたいだけです。Googleで探してみましたが、Javaで標準で上記のような処理を出来るようなメソッドを見つけることができませんでした。このようなメソッドは標準で存在しますでしょうか? 自作する場合、いくつかアプローチがあると考えられますが、最もパフォーマンスを速くしたい場合にはどのような作り方にした方がよいでしょうか。お手数ですが、宜しくお願いします。 <追伸> プレビューで見たら、半角の文字が全角に自動的に変換されてしまいました。。 例文からはわかりにくいかも知れませんが、宜しくお願いします。。

    • ベストアンサー
    • Java
  • 【VBA】半角カタカナのみを全角にするには?

    http://bekkoame.okwave.jp/qa8979427.html こちらのページを参考にしたのですが カタカナのみ全角にしたいのですが 平仮名がカタカナになってしまいます。 正規表現と言うのがよくわからないので コピペで使ってますが Sub Sample2() Dim myStr As String Dim Match As Object, Matches As Object Dim CW As String With CreateObject("VBScript.RegExp") .Pattern = "[\uFF61-\uFF9F]+" '---(1) .Global = True myStr = "あああイイイ" If Len(myStr) > 0 Then Set Matches = .Execute(myStr) 'マッチしたすべての文字列を置換 For Each Match In Matches myStr = Replace(myStr, Match.Value, _ StrConv(Match.Value, vbWide)) '---(2) Next Match CW = myStr End If End With End Sub だと「あああ」は平仮名のままなのですが myStr = "のののノノノ" にすると、ひらがなの「ののの」が全角カタカナになってしまいます。 Sub test() Call KanaJisF("あああイイイ") End Sub Function KanaJisF(ByVal sSrc As String) As String Dim sTempW As String Dim sTempN As String Dim i As Long ' ' 全角カナに相当する文字コードを総当たりでループ For i = -31852 To -31936 Step -1 sTempW = Chr(i) ' 全角カナ変数に格納 sTempN = StrConv(sTempW, vbNarrow) ' 半角カナに変換して変数に格納 ' ' 半角カナ各文字が、文字列に含まれている場合、全角カナに置換 If InStr(1, sSrc, sTempN) Then sSrc = Replace(sSrc, sTempN, sTempW) Next i ' ' 半角長音、文字列に含まれている場合、全角長音に置換 sTempN = Chr(176) If InStr(sSrc, sTempN) Then sSrc = Replace(sSrc, sTempN, "ー") KanaJisF = sSrc End Function こちらのコードは、「あああ」も全角カタカナになりました。 "のののノノノ"も同様です。 平仮名は平仮名のままにしたいのですが そのような方法はありますか?

  • [ASP]正規表現で半角英数記号を判定

    [ASP]正規表現で半角英数記号を判定 ASP(VBScript+HTML)で開発作業をしています。 画面から入力された値が「半角英数」のみで構成されていることを検査する為に、 以下の入力チェックを設けています。 set objre = new RegExp objre.pattern = "[^0-9a-zA-Z]" blnCheck = objre.test(sInput) '##sInputは入力値が入った変数 このblnCheckに格納された結果がtrueかfalseかで判定しています。 しかし、半角英数のみでなく、半角記号についても入力を許可することになりました。 上記の処理を「半角英数と半角記号で構成されているかどうか」に変更する為には どのように記述を変更すればいいのでしょうか。 ご存じの方がいらっしゃいましたら助言をいただけないでしょうか。 よろしくお願いします。

  • 半角の記号について

    自分のケータイから他社のケータイにメールをするときに、「半角のカタカナは全角のカタカナに変換されてしまう」ということは友達に教えてもらったのですが、半角の記号って全角の記号に変換されてしまうのでしょうか?? 顔文字とかするときに、半角と全角では大きく変わってしまうので困っています↓↓ すごく初心者まな質問ですいません。。。

  • エクセル上で英数のみを半角するにはどうしたらいいでしょうか?

    エクセル上で、英数のみを全角から半角にするソフトはあるでしょうか? 英数・カナ・記号・スペースまで一括に半角にするものや、英数でも日本文の中の英数1文字は半角にしないものなどは見つけることができたのですが、英数だけをすべて半角にするものは見つけられません。 何かいいものがありましたら教えてください。

  • Access 全角英数と半角英数の比較

    Access2003, WindowsXP AccessVBAで以下のような比較を書いていたのですが、こちらの意図と違う動作をしていることに気づきました。 Dim strA as String Dim strB as String strA = "123abc" '半角英数 strB = "123abc" '全角英数 If strA = strB then  Msgbox("strAとstrBは同じです") Endif 上のコードをそのまま実行すると、strAとstrBは同じであると判断されてしまいます。 こちらの意図としては、比較した2つの変数は「全角英数」と「半角英数」という点で違う値として認識して欲しいのですが、上のような表記方法ではダメなのでしょうか。 正しい比較方法などがあるようでしたら、教えていただきたいです。よろしくお願いします。

  • 全角と半角を統一する関数

    エクセルの関数で、半角英数文字・全角英数文字や、半角カタカナと全角カタカナが混じっている表で、全角に変換して統一できるような関数や方法があれば教えてください。

  • 「全角英数」

    XPを使っています。 IMEをキーボード操作で「全角英数」にしたいのですがどのキーを押せばいいのでしょうか? 「カタカナ ひらがな ローマ字」キーを押しても何も起こらないし、 「半角 全角 漢字」キーを押しても「A」 と「あ」にしか切り替わりません。 マウスでIMEの「入力モード」クリックして手作業で「全角英数」をクリックするしかないですか?

専門家に質問してみよう