テキストファイルの読み込み


ラブモグラ  2006-04-15 19:56:40  No: 95063

内容が
氏名  住所  電話番号(改行)
氏名  住所  ...
というテキストファイルを、
List1  に  氏名, List2  に  住所
という風に読み込みたいのですが、どういう処理をすればよいのか教えていただけないでしょうか?
お願いします。


ガッ  2006-04-15 20:11:23  No: 95064

まずは環境を書いてください
環境に寄らない回答となれば
1  ファイルから文字列を読み込む
2  行の終端文字で区切る
3  1行の各項目の区切り文字で区切る
4  各項目をList1やList2などといったものになんとかする(List1とかList2って何だろう…?)
となりましょうか


noname  2006-04-17 20:21:16  No: 95065

>ガッ 氏
>4  各項目をList1やList2などといったものになんとかする(List1とかList2って何だろう…?)
リストボックスかな?とは思ったんですが、どうなんでしょうね^^;

>ラブモグラ 氏
スペース区切りで記述しているテキストを読み込んでリストボックスにそれを入れる・・・
という解釈でいいのでしょうか?


.  2006-04-17 23:15:17  No: 95066

とりあえず1行ずつ読み込んで配列に入れといて
for文で1行ずつループしてもう一つfor文をネストして中のfor文で1文字ずつ判定していく

たとえば最初は氏名の読み込みを行ってスペースが来た時点で次の住所の読み込みに移るとか?

---------------以下.netと仮定してソース---------------------
配列をdat()、氏名をnam()、住所をpos()とすると
(先にdatに1行ずつデータを入れとく)
Dim i,n As Integer
n = 1
Redim nam(UBound(dat)) : Redim pos(UBound(dat))

For i = 0 To UBound(dat)
    For n = 1 To Len(dat(i))
        Static stat As Byte
        Select Case stat
            Case 0
                If dat(i) = "  " Then stat = 1 : GoTo Exiting
                nam(i) += ・at(i)からn番目の文字を1つ取り出して追加)
            Case 1
                If dat(i) = "  " Then stat = 2 : GoTo Exiting
                pos(i) += ・dat(i)からn番目の文字を1つ取り出して追加)
            Case 2
                ・List1とかにデータを代入(最後でもいいけど)
        End Select
Exiting:

    Next n
Next i

※ところどころ忘れたりして日本語なのはスマン


nyangetsu  2006-04-29 02:05:15  No: 95067

.さん、そういう事ならSplit関数を使ったほうが楽ですよ。
↓単純ですがSplit関数の使い方。
-------------------------------
    Dim str  As String
    Dim strarr() As String
    
    str = "氏名 住所 電話番号"
    strarr = Split(str, " ")
    Debug.Print strarr(0), strarr(1), strarr(2)
-------------------------------


.  2006-04-29 04:47:33  No: 95068

おぉ・・・

その手があったか・・・
ということで修正版

こんな感じでいいのだろうか・・・

>nyangetsu 
間違ってたらまたヨロシクお願いします・・・。

---------------以下.netと仮定してソース---------------------
配列をdat()、氏名をnam()、住所をpos()とすると
(先にdatに1行ずつデータを入れとく)
Dim i,n As Integer
n = 1
Redim nam(UBound(dat)) : Redim pos(UBound(dat))

For i = 0 To UBound(dat)
    Dim d() As String
    d = Split(dat(i), " ")
    nam(i) = d(0) : pos(i) = d(1)
Next i


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加