C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: テキスト取り込みについて


(過去ログ 53 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■29642 / inTopicNo.1)  テキスト取り込みについて
  
□投稿者/ 赤 (1回)-(2008/12/11(Thu) 19:15:00)

分類:[.NET 全般] 

テキストの文字列から特定の文字列を抽出することはできてるのですが、
特定の文字列を含む行を抜き出すのがどうにも上手くいきません。
どなたか、ぜひアドバイスを頂けると大変助かるのですが…
例
番号,日付,時間,-
1,081201,12:00,-
2,081201,12:30,-
3,081205,12:00,-
4,081206,12:30,-

上記から081201で抽出

1,081201,12:00,-
2,081201,12:30,-

開発環境・使用言語
Microsoft Visual Basic 2005 Express Editionで
Visual Basicを使用してます。

引用返信 編集キー/
■29643 / inTopicNo.2)  Re[1]: テキスト取り込みについて
□投稿者/ 魔界の仮面弁士 (947回)-(2008/12/11(Thu) 19:40:07)
No29642 (赤 さん) に返信
> 特定の文字列を含む行を抜き出すのがどうにも上手くいきません。


'元データ全体
Dim all() As String
all = My.Computer.FileSystem.ReadAllText("C:\text.txt").Split(vbCrLf)

'検索対象データ
Dim s As String = "081201"

'データ取り出し
Dim results() As String = Filter(all, s)
引用返信 編集キー/
■29645 / inTopicNo.3)  Re[2]: テキスト取り込みについて
□投稿者/ 赤 (3回)-(2008/12/11(Thu) 22:41:50)
魔界の仮面弁士さん早速の回答ありがとうございます

ついでといっては恐縮なのですが、取り出したデータresults() を
TextBoxに入力するのはresults() にどの様な処理を施せばよいのでしょう?
単純に TextBox.Text = results() 
では、インデックスの数がインデックス付き配列の次元より少ない値となってしまうので…
宜しければお願い致します

引用返信 編集キー/
■29650 / inTopicNo.4)  Re[3]: テキスト取り込みについて
□投稿者/ επιστημη (1459回)-(2008/12/12(Fri) 01:27:47)
επιστημη さんの Web サイト
> TextBoxに入力するのはresults() にどの様な処理を施せばよいのでしょう?
> 単純に TextBox.Text = results()
> では、インデックスの数がインデックス付き配列の次元より少ない値となってしまうので…

textBox.Lines = results(); じゃなくて?

引用返信 編集キー/
■29654 / inTopicNo.5)  Re[4]: テキスト取り込みについて
□投稿者/ 赤 (4回)-(2008/12/12(Fri) 02:38:39)
2008/12/12(Fri) 02:59:51 編集(投稿者)

επιστημηさん返信ありがとうございます

textBox.Lines = results
で書き込みができました。


現在テキスト抽出プログラムを作成していまして、
今までの回答のお陰で抽出と書き込みはできるようになったのですが、
その他の条件などが絡むとどうにも上手くいきません…
宜しければアドバイスを頂けるととても助かります。

対象のテキストは固定長とCSVの2種類でテキストファイルの読み込みと
ファイルの保存まではできていますが要の抽出が…

固定長ファイル
抽出条件はオフセットに指定した文字列が記述されていること。
オフセットというのは、レコードの先頭からのバイト数のこと。
たとえば、下記の2行固定長テキストのから、
オフセット4に「20081205」が記述されているレコードを
抽出すると、1行目のみが抽出されることになります。
また、オフセット8に「1206」が記述されているレコードを
抽出すると、2行目のみが抽出されます。
000020081205ABCDEFG
000020081206ABCDEFG

可変長CSVファイル
抽出条件は指定したカラムの値が指定した文字列に等しいこと。
カラムはカンマまたはタブで区切られた列のこと。
たとえば、下記の2行の可変長テキストから、
2番目のカラムが「20081205」のレコードを抽出すると、
1行目のみが抽出されます。
また、2番目のカラムが「1206」のレコードを抽出すると、
抽出されるレコードはありません。
0000,20081205,ABC,DEFG
0000,20081206,ABC,DEFG

どうか、宜しくお願い致します。
引用返信 編集キー/
■29655 / inTopicNo.6)  Re[4]: テキスト取り込みについて
□投稿者/ 赤 (5回)-(2008/12/12(Fri) 02:59:58)
επιστημηさん返信ありがとうございます

textBox.Lines = results

で書き込みができました。
引用返信 編集キー/
■29656 / inTopicNo.7)  Re[5]: テキスト取り込みについて
□投稿者/ Jitta on the way (245回)-(2008/12/12(Fri) 07:12:43)
No29654 (赤 さん) に返信
> 固定長ファイル
> 抽出条件はオフセットに指定した文字列が記述されていること。
> オフセットというのは、レコードの先頭からのバイト数のこと。
> たとえば、下記の2行固定長テキストのから、
> オフセット4に「20081205」が記述されているレコードを
> 抽出すると、1行目のみが抽出されることになります。
> また、オフセット8に「1206」が記述されているレコードを
> 抽出すると、2行目のみが抽出されます。
> 000020081205ABCDEFG
> 000020081206ABCDEFG
>
> 可変長CSVファイル
> 抽出条件は指定したカラムの値が指定した文字列に等しいこと。
> カラムはカンマまたはタブで区切られた列のこと。
> たとえば、下記の2行の可変長テキストから、
> 2番目のカラムが「20081205」のレコードを抽出すると、
> 1行目のみが抽出されます。
> また、2番目のカラムが「1206」のレコードを抽出すると、
> 抽出されるレコードはありません。
> 0000,20081205,ABC,DEFG
> 0000,20081206,ABC,DEFG
>

それらを実行するために、どんなことが出来れば良いとおもいましたか?


知識を伝えるのは簡単ですが、知恵を働かせられない人に伝えても、廃れるだけですから。
あなたの課題を代わりにすることで、私たちになんのメリットがあるのでしょう?あなたが、どんなことを考え、何が課題解決の邪魔になっていたのかを知ること。それが私たちにとって、価値ある情報です。

Give and Take でいきましょうや。




固定長
オフセットから、比較対象の文字数だけ抜き出し、一致するか調べればいいです。
string クラスのメソッドをよく調べましょう。


CSV
単純には、カンマで分割して文字列配列を得て、配列の指定番目を比較すればいいです。やはり、string クラスのメソッドを調べましょう。
引用返信 編集キー/
■29697 / inTopicNo.8)  Re[5]: テキスト取り込みについて
□投稿者/ .SHO (392回)-(2008/12/12(Fri) 14:03:36)
No29654 (赤 さん) に返信

> カラムはカンマまたはタブで区切られた列のこと。

これはCSVじゃないです。。。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -