• ベストアンサー

文字列から半角数字以外を除去したい

いつもお世話になっております。 現在、SQLServer2000(SP4)、Visual Basic6.0(SP5)を使って開発しています。 ある文字列から、半角数字以外を除去したいのですが、対象データの数が多いので、ループさせたりして、時間が掛かる処理は避けたいと思っています。 なるべく簡単な操作で文字列から半角数字以外を除去する方法を御存知でしたら教えてください。 【やりたい事の例】 ・0120-123-123 → 0120123123 ・a123456 → 123456 以上、宜しくお願いします。

  • bou7
  • お礼率69% (51/73)

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

  • ベストアンサー
回答No.1

お世話になります。 プロジェクトの参照設定で Microsoft VBScript Regular Expressions 5.5 にチェックを入れます。 以下のような感じで、RegExp.Replace を実行します。 Dim reg As RegExp Set reg = New RegExp reg.Pattern = "\D" reg.Global = True Dim str As String str = "0120-123-123" str = reg.Replace(str, "") Debug.Print str ' 0120123123 が出力される str = "a123456" str = reg.Replace(str, "") Debug.Print str ' 123456 が出力される Set reg = Nothing

参考URL:
http://homepage1.nifty.com/rucio/main/technique/InputChk2.htm
bou7
質問者

お礼

回答、ありがとうございました。 多分恥ずかしいことだと思うのですが、「正規表現」と言うものを知りませんでした。 今回の方法、大変勉強になりました。 どうもありがとうございました。

その他の回答 (1)

noname#22222
noname#22222
回答No.2

力技ですが・・・。 Private Sub コマンド0_Click()   Dim I As Integer   Dim C As String      For I = 1 To 26     C = Mid("-abcdefghikl;knopqrstuvwxyz", I, 1)     CnnExecute "UPDATE TABLE1 SET Test=REPLACE(Test, '" & C & "', '');"   Next   MsgBox "終りました!" End Sub CnnExecute 関数は自作する必要があります。

bou7
質問者

お礼

回答、ありがとうございました。 でも今回は、No.1さんが教えてくださった、「正規表現」と言うものを使ってみたいと思います。 折角教えてくださったのに、申し訳ありません。

関連するQ&A

  • 文字列の並び換え

    Visual BASIC 6で 文字列の並び換えの方法がわかりません 文字列には半角も全角もあって数字もあります。 if A$ < B$ then ではだめです。

  • 文字列のカラムを数字と比較したい

    sqlserver2005 文字列のカラム(ただし数字のみ)と、画面から文字列としてきた 数字の大小を比較したいと思っています。 たとえば、WHERE ~ 【対象カラム】 > CONVERT(NUMERIC,'1')のように しようと思っていたのですが、この場合、【対象カラム】の中に 空白があるとこけてしまいます。 文字列なので、空がNULLとは限らないため困っています。 そもそもINT型のカラムならば良いのですが、都合により文字列の カラムにするしかなく。 妙案ありましたらアドバイスいただけないでしょうか。

  • エクセルで半角数字には数値と文字列がある?

    http://okwave.jp/qa/q6473596.html の質問を見て私も納得がいかず質問させていただきます。 たとえば、A1セルの書式を文字列に設定してから半角で数字を打ち込むと数字は数値でなく文字列としてセルに入ります。 この入力後、A1セルの書式を標準や数値に直してもそのセルの中の数字は左に寄ったままで文字列のままでいるようです。 (でもこれをセルの中でエンターキーを押したりすると数値になってしまいますが) 次にB1セルの書式を標準あるいは数値にして数字を打ち込むと、当然のことですが数字は数値としてセルに入ります。 この入力後、B1セルの書式を文字列に変えると数字は左に寄りますから一見文字列になったように見えます。 ところが上記のセルとこのセルをA1=B1で試してみるとFALSEが返ります。 逆に同じ数字を数値として打ち込んだセルと=で試すとTRUEが返ります。 これはA1とB1は同じ文字列としての数字ではないという証拠だと思います。 B1セルの書式を標準に戻すとまた数字は右よりにもどりますから、セルの中の数字は数値のままのようです。 つまり、半角の数字にはセルの書式にかかわらず文字列と数値の二つがあるということなのでしょうか? だとしたらこの二つはどうやって区別すればいいのでしょうか?

  • 文字列の中に半角文字があるか調べる

    文字列の中に半角文字があるかを調べる簡単な方法を 教えて下さい。 例  テレコムサービス   半角文字あり(テレコ)    テレコムサービス  半角文字なし

  • 《エクセル2000》なぜか文字列になっている半角数字を、一気に数字扱いにするには?

    LEFT関数を使って切り取った半角数字が、文字列扱いになっています。(文字数字混在のセル…つまり文字列であるセルから切り取ったからでしょうか?) セルをダブルクリックし、エンターキーを押すと、こちらもなぜか数字扱いになるのですが(以上一連の作業はISNUMBER関数で確認)、データが数百件あるので、これを一気に行う方法はないでしょうか。 よろしくお願いします。

  • エクセル 文字列の中から数字を抽出する方法

    エクセル 文字列の中から数字を抽出する方法 以前 QNo.5823420 で質問させて頂いたんですが 再度質問させてください。 "オーダー番号"+"半角スペース"+"部品型番"+"半角スペース"+"個数"+"半角スペース"+"部品名" というような文字列の中から個数の数のみを抽出する方法を教えてください。 "文字列"+"半角スペース"+"文字列"+"半角スペース"+・・・と文字列の繋がる数は決まってませんので 個数は何番目のスペースの後にくるかは不定です。 数量の半角"ケ"とその前の半角スペースまでの間の数字を抽出したいです。 例1)文字列 :ABC110 XXYYZZ5566 2ケ ****   抽出文字:2 例2)文字列 :ABC XYZ 5566 DDEE11 3ケ FFGG   抽出文字:3 よろしくお願いします。

  • 半角カナ文字の検査

    お世話になっております。 現在C#で開発を行っています。文字列の検索で困っているのですが、 文字列が半角かなで構成されているか、もしくは半角かな以外の文字が含まれるか? を判断したいのですがどのように行えばよいのでしょうか。 よろしくお願い致します。m(_ _)m

  • 入力文字列が数字かどうかの判別

    キーボードから入力した文字列が数字かどうかを判別したいのです。 入力した文字列が数字ではない間、またその逆の文字列が数字の間ループさせたいのです。 ループさせないやり方(Integer.parseInt(String)で数字でなければcatchで処理する)はわかるのですが・・・ import java.io.*; class Test{ public static void main(String[] args){ String str = ""; BufferedReader br = new BufferedReader (new InputStreamReader(System.in)); try{ do { str = br.readLine(); System.out.print("\n"); }while(strが数字の間、もしくは数字以外の間) } catch(Exception e){ System.err.println(e); } } } 上のプログラムのwhileの中で判別したいのです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 全角数字以外を半角化する方法

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

  • LINUXで半角の英数字以外の文字列をgrep検索したい

    LINUXで半角の英数字以外の文字列をgrep検索したい たとえば a!3" とか 30%(under_s) とか grepでもなんでもよいですが上記のような半角英数字以外の文字列を検索できますでしょうか。 grep -c で、半角英数字以外の文字列があるかどうか確認したいです。 よろしくお願いします。

専門家に質問してみよう