• ベストアンサー

VB 2008: 文字列の抽出手段?

付属一覧.csv 品番001, 品番001用付属1, 品番001用付属2, 品番001用付属3 品番002, 品番002用付属1, 品番002用付属2, 品番002用付属3 品番003, 品番003用付属1, 品番003用付属2, 品番003用付属3 品番004, 品番004用付属1, 品番004用付属2, 品番004用付属3 品番005, 品番005用付属1, 品番005用付属2, 品番005用付属3 このようなファイルを読み込んで入力された品番に合致する行を抜き出す。 そのような小さなプログラムを書いています。 VB.NET を知ったのは1月26日。 ですから、とにかく、一つひとつがわかりません。 で、今回の質問は、先頭の品番の抜き出し要領。 aAttachment = Split(aAttachments(M))(0) で抜き出せることはわかります。 問題は、果たして<Split 関数だけが唯一の方法か?>ということ。 aAttachment = aAttachments(M).Column(0) なんて方法がある筈だ!と思って探しましたが探せませんでした。 メソッドで何か Split関数に代わる方法はないのでしょうか? <ある、ない>が知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

VB2005以降ならば ファイル自体をTextFieldParserで扱えばReadFieldsメソッドで文字列の配列として取り出せます using myReader as new Microsoft.VisualBasic.FileIO.TextFiledParser("ファイルパス") myReader.FieldType = new Microsoft.VisualBasic.FileIO.FieldType.Delemited myReader.Delemiters = new String(){ "," } dim curRow() as String while not myReader.EndOfFile   curRow = myReader.ReadFields()   ' ここで分離された各項目の処理を行う end while end using といった具合です

noname#140971
質問者

お礼

VB.NET に関しては、ようやく、データ型、演算子、式の確認を終えたばかり。 で、今、Else-If 文の確認中です。 質問は、Else-If の演習に関するものです。 そういうころで、ファイルアクセスに関しては全くの無知です。 しかし、参考になりました。 なぜなら、ファイルを配列に呼び込まなければ Else-If の演習ができないからです。 1、Split関数等での文字列の分割方法。 2、ファイルを配列に呼び込む方法。 演習で解明すべき点は、この2つでした。 1に関しては、どうやらなさそうです。 2に関しては、System.IO のFile か StreamReader しか眼中にありませんでした。 >ファイル自体をTextFieldParserで扱えばReadFieldsメソッドで文字列の配列として取り出せます。 これは、是非にもテストします。 超初心者の質問への回答、ありがとうございました。

その他の回答 (1)

  • Gab_km
  • ベストアンサー率40% (20/50)
回答No.1

どこにも明記されていませんが、aAttachmentsがCSVファイルの任意の1行で、 aAttachmentが抜き出した文字列だと思うことにします。 aAttachment = aAttachments.Substring(0, aAttachments.IndexOf(","c)) Split関数ではない方法ですが、これで良いんでしょうか?

noname#140971
質問者

お礼

? "AAA,BBB".Substring(0, "AAA,BBB".IndexOf(","c)) "AAA" ? Split("AAA,BBB", ",")(0) "AAA" 目的を達しました。 本当に感謝です。

関連するQ&A