全角、半角が混じった文字列の取出し方(VB6) [PC]
前にやったことがあるのにどこでやってたか忘れてやり方を探すのに
苦労したので覚え書きで書いてきます。
VBはUnicodeで文字列を扱っているのでMID関数でデータを取ると
全角、半角関係なく1文字としてデータが取れるので「あいう123えお」の
数字を取るには、4文字目から3つで取得できます。
Unicodeでない場合は、全角は2バイト、半角は1バイトで処理することに
なるのでめんどくさいことになります。
VBでファイルから読み込むと自動的にUnicodeになるからそれをシステムコードに
戻して、文字列を取ってまたUnicodeに戻すことになるんですね。
数字を取得するサンプルプログラムです。
Dim strTmp As String
Dim strData As String
strTmp = "あいう123えお"
strTmp = StrConv(strTmp, vbFromUnicode) ' システムコードに変換
strData = MidB(strTmp, 7, 3) ' 1バイトずつで数えて文字列取得
Debug.Print StrConv(strData, vbUnicode) ' Unicodeに戻して表示
ネットワーク上でソケット通信をするときに送られくるデータが全角は2バイト、
半角は1バイトで処理する必要がある場合に使ってます。
Windows同士ならUnicodeで統一できそうだけど、なかなかそうはいかいなから
めんどうなところです。
コメント 0