![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
ASP(VBScript)での開発をしています。
全角英数記号を、半角英数記号に変換したくて、以下のメソッドを
作りました。
Function FunFullToHalf(ByVal StrTarget)
Dim ObjBASP21
Dim StrHalf
Set ObjBASP21 = Server.CreateObject("basp21")
StrHalf = ObjBASP21.StrConv(StrTarget,8)
FunFullToHalf = StrTarget
End Function
しかし、これだと、全角カタカナまで半角になってしまい、困っています。
回避策を教えていただけないでしょうか。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?e8efa67)
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が見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBAでPDFファイルをMicro...
-
文字コードの%E3%80%とは何です...
-
CString から LPCTSTRの型に変換
-
HTMLユニコード?の変換
-
エクセルでの漢字(全角ひらが...
-
gccでiconvを使った文字コード...
-
シングルクォーテーションの変換
-
SJIS->UTF8->SJISコード変換に...
-
ひらがなから全角カタカナへの...
-
【PHP】全角記号を半角記号...
-
シャープ(#)の受け渡し
-
Kシェルでの文字型→数値型変換
-
エクセル(Exsel)についての質...
-
CSVファイルの中で、「 , 」カ...
-
perl でエラー:Wide character...
-
エクセルで数値を全角文字(カ...
-
カンマ区切りの数字をCSVフ...
-
住宅にカナを入力する際に丁目...
-
全角英数字の必要性が理解できない
-
VB2005のTextBoxでカン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CString から LPCTSTRの型に変換
-
Excel VBAでPDFファイルをMicro...
-
文字コードの%E3%80%とは何です...
-
SJIS->UTF8->SJISコード変換に...
-
SQLのデータで半角カナを全角に...
-
gccでiconvを使った文字コード...
-
テキストをhtml変換するには
-
Visual Studio プロパティペー...
-
Encode.pmで「髙」(ハシゴ高)...
-
ローマ字からカナに変換する方...
-
LINUX上でシリアル通信(C++)
-
VBScript文字列をSJISからUTF8...
-
【PHP】全角記号を半角記号...
-
VB6にも「ToString」ってあり...
-
五十音の並べ替えsortを教えて...
-
これはなんの文字コードでしょうか
-
エクセルでの漢字(全角ひらが...
-
ウイザードからのVBAでクエリー...
-
漢数字の変換
-
文字化けしてしまって困っています
おすすめ情報