• ベストアンサー

全角数字以外を半角化する方法

VB6 WindowsXp 文字列内の全角数値(0~9)以外の文字を半角にする方法を 教えてください。 例) ア-12-50-123山田浩輔&ABCD-2 ↓ ア-12-50-123山田浩輔&ABCD-2

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

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 こんな感じの事でしょうか?

meron_
質問者

補足

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

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

#1です。 myReg.Pattern = "[^0-9()]+|[()]+" ですかね。

meron_
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

おそらく文字コードの問題でしょう myReg.Pattern = "[^0123456789]+" と書けばよい

meron_
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A