外字を全角スペースに置き換えるには?

解決


みんご  2003-01-29 18:11:31  No: 76950  IP: [192.*.*.*]

さっぱり、方法が分からなくて困っています。

文字列に、シフトJISの外字コード領域(F040〜F9FC)の
文字が存在した場合に、全角スペースに置き換えるような処理を
VBで行いたいのですが、その方法をご存じの方がおられたら、
教えてください。

編集 削除
oku  URL  2003-01-29 23:12:22  No: 76951  IP: [192.*.*.*]

文字の文字コードがわかればいいんですよね?
こうすれば文字コードがわかります。

Private Sub Command1_Click()
    MsgBox Hex(Asc(Text1.Text))
End Sub

あとは外字領域に入っていれば、Replaceすれば良いだけです。

編集 削除
たかみちえ  URL  2003-01-29 23:56:56  No: 76952  IP: [192.*.*.*]

簡単にはokuさんのでいいと思いますけど、1文字ずつとらないといけません。

  わたしには、VBでそういうことのできる方法が思い当たりません…。
たぶん、VBで長くやっている人はすぐに思いつくことだと思いますけど、
あいにく、わたしはVBから離れてかなり経っているので…。
  for  ループを使えば何とかなりそうです。
そして、上位バイトが外字かもしれないのなら、次を調べるという方法で。

編集 削除
oku  URL  2003-01-30 01:50:33  No: 76953  IP: [192.*.*.*]

すいません説明不足でした。
たかみちえさんの言われるとおり1文字ずつとらないといけません。

まっ  こんな感じでどうでしょう。


Private Sub Command1_Click()
    Dim intIndex        As Integer

    Text2.Text = ""
    For intIndex = 1 To Len(Text1.Text)
        If "F040" <= Hex(Asc(Mid$(Text1.Text, intIndex, 1))) And _
           Hex(Asc(Mid$(Text1.Text, intIndex, 1))) <= "F9FC" _
          Then
            Text2.Text = Text2.Text & "  "
          Else
            Text2.Text = Text2.Text & Mid$(Text1.Text, intIndex, 1)
        End If
    Next intIndex
End Sub

編集 削除
みんご  2003-01-30 09:46:02  No: 76954  IP: [192.*.*.*]

okuさん・たかみちえさん  ありがとうございました。

教えていただいた方法でやってみようと思います。

編集 削除