投稿者 Fredee  (社会人) 投稿日時 2008/12/11 07:30:36
お世話になっております!!
固定長テキストファイルに日本語(2バイト)文字が有ると、フィールドの指定が変わってしまいます。
例えば、C:\text.txt に
12345あいアイウ678うえお
のレコードがあって、12345 , あいアイウ , 678 , うえお を取り出すのに次のようにしています。
'-----  ストリームリーダー定義  -----
Dim SrFile As StreamReader
Dim Sline As String

Dim A1 As String   '12345 を格納 ← 問題なし
Dim J1 As String   'あいアイウ を格納 ← 全角と半角が混在すると以降の指定が変わります
Dim A2 As String   '678 を格納したい ← 13桁目
Dim J2 As String   'うえお を格納したい ← 16桁目

SrFile = New StreamReader("C:\text.txt", Encoding.Default)
Sline = SrFile.ReadLine
While Not Sline Is Nothing
    If Sline.Length <> 0 Then
        A1 = Mid(Sline, 1, 5).ToString 
        J1 = Mid(Sline, 6, 5).ToString   '全角半角が混在したり、半角だけ等で以降の指定が
        A2 = Mid(Sline, 11, 3).ToString  '変わります
        J2 = Mid(Sline, 14, 3).ToString   
    End If
    Sline = SrFile.ReadLine
End While
この時、J1の部分に半角だけの時や全角の文字数が変わった場合に、A2,J2の取り出し位置が変わります。
全角は2バイトで数えて、フィールドの指定カラムを変えないで数える方法はありますか?
Excel VBAではバイトで数える関数がありますが、VB.NETにはないのでしょうか!!
説明が十分でないかも知れませんが、何方かご教授をお願いします。