プロが教える店舗&オフィスのセキュリティ対策術

VB6 WindowsXp
文字列内の全角数値(0~9)以外の文字を半角にする方法を
教えてください。

例)
ア-12-50-123山田浩輔&ABCD-2

ア-12-50-123山田浩輔&ABCD-2

A 回答 (3件)

Dim myReg As Object


Dim st As String, ss As String
Dim v As Variant

Set myReg = CreateObject("VBScript.RegExp")
myReg.Pattern = "[^0-9]+"
myReg.Global = True

st = "ア-12-50-123山田浩輔&ABCD-2"
ss = st

For Each v In myReg.Execute(st)
ss = Replace(ss, v.Value, StrConv(v, vbNarrow))
Next

MsgBox st & vbLf & ss

Set myReg = Nothing

こんな感じの事でしょうか?

この回答への補足

回答ありがとうございました。
いまいち結果が不安定です。
下記の2つですが、全角カッコの半角化が前者の"("
が半角になっていません。
2と2の違いだけで結果が異なるのはなぜでしょうか?
※下記は画面上ではわかりにくいかもしれませんので、コピペして試してみてください。

1、2、4、東京都新宿区西新宿(2)特
↓NG
1、2、4、東京都新宿区西新宿(2)特
===========================================
1、2、4、東京都新宿区西新宿(2)特
↓OK
1、2、4、東京都新宿区西新宿(2)特

補足日時:2009/09/02 11:06
    • good
    • 0

#1です。



myReg.Pattern = "[^0-9()]+|[()]+"
ですかね。
    • good
    • 0
この回答へのお礼

できました。ありがとうございました。

お礼日時:2009/09/02 16:00

おそらく文字コードの問題でしょう


myReg.Pattern = "[^0123456789]+"
と書けばよい
    • good
    • 0
この回答へのお礼

ありがとうございます。
でも、結果は同じでした。解決していません。
引き続きお願いいたします。

お礼日時:2009/09/02 12:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!