none
CSV形式のファイルの内容を配列に記憶させるには。 RRS feed

  • 質問

  • http://social.msdn.microsoft.com/Forums/ja-JP/winstoreapp/thread/389eb44c-cfcf-40fa-9808-c1c4c0204667

    こちらで質問さしてもらったものですが、ご回答してくださった方はその説はありがとうございます。皆様のアドバイスのおかげで、無事理解できました。
    では新たにCSVに関連する質問なのですが、例えば、

    0,サーバ,ネットワーク上でクライアントに対し、検索データや各種サービスを提供するコンピュータのこと。
    1,バス,CPU内部の回路やメインメモリ、入出力の間で、データのやりとりをするための共通の伝送路のこと。

    上記のような内容のCSVファイルがあったとします。
    このカンマで区切られている項目をそれぞれ配列に記憶したいのですが、どのような方法がベストだと思いますか?
    コードで表現するなら

            Dim a(2, 2) As String
            a(0, 0) = "ここには読み込んだCSVの1行目の1列目の内容が入ります"
            a(0, 1) = "ここには読み込んだCSVの1行目の2列目の内容が入ります"
            a(0, 2) = "ここには読み込んだCSVの1行目の3列目の内容が入ります"
            a(1, 0) = "ここには読み込んだCSVの2行目の1列目の内容が入ります"
            a(1, 1) = "ここには読み込んだCSVの2行目の2列目の内容が入ります"
            a(1, 2) = "ここには読み込んだCSVの2行目の3列目の内容が入ります"
            a(2, 0) = "ここには読み込んだCSVの3行目の1列目の内容が入ります"
            a(2, 1) = "ここには読み込んだCSVの3行目の2列目の内容が入ります"
            a(2, 2) = "ここには読み込んだCSVの3行目の3列目の内容が入ります"
    と、このような感じです。

    2013年5月11日 3:02

回答

  • CSV が意味のある並びなのであれば、クラスを作ってその配列、またはリストにすることを提案しておきます。

    String 配列の配列でも管理できるかもしれませんが、ぱっと見て 0 番目が何だったかが書いている本人にしかわからないですし、数ヶ月後にコードを読み直そうとするときに苦労します。
    ざっと見る限り、「ID」、「用語」、「用語の説明」という順で並んでいるようですから、これらのメンバーを持つクラスを作ってはいかがでしょうか。

    // その後に使う用途次第では、String の配列の配列の方が使いやすい可能性もあります。

    2013年5月11日 9:29
    モデレータ
  • 誤解されているようにお見受けします。

    ストアアプリの環境で作るのはなんにせよ自分は初めてで従来のVB.NETのようにそう簡単にはコーディングができませんので困っています・・・

    確かに、上位層(=ユーザーインターフェース層(コントロールなど))と、下位層(ファイルアクセスや通信など)は従来のデスクトップアプリとは大きく異なる部分があります。
    (注意:上位層に関して言えば、WPF でデスクトップアプリの世界である程度似た概念があるので、大きく異なるという言い方は正しくない)

    しかしながら、今回のあなたの要望は、ストアアプリだからといって従来の方法が使えないわけではありません。
    あなたの発言からすると、デスクトップアプリの経験であればできるとのことですので、一度モデリングしてみてはいかがでしょうか。
    単なるクラスを作って、それに代入するだけなら、ストアアプリもデスクトップアプリも変わりません。

    • 回答としてマーク kuratimoto 2013年6月14日 8:15
    2013年5月13日 13:55
    モデレータ

すべての返信

  • CSV が意味のある並びなのであれば、クラスを作ってその配列、またはリストにすることを提案しておきます。

    String 配列の配列でも管理できるかもしれませんが、ぱっと見て 0 番目が何だったかが書いている本人にしかわからないですし、数ヶ月後にコードを読み直そうとするときに苦労します。
    ざっと見る限り、「ID」、「用語」、「用語の説明」という順で並んでいるようですから、これらのメンバーを持つクラスを作ってはいかがでしょうか。

    // その後に使う用途次第では、String の配列の配列の方が使いやすい可能性もあります。

    2013年5月11日 9:29
    モデレータ
  • お返事遅くなって申し訳ありません。ご回答ありがとうございます。
    お手数おかけして申し訳ありませんが、もしよければ参考にしたいためVB.NETでコードを書いて頂けませんでしょうか?

    ストアアプリの環境で作るのはなんにせよ自分は初めてで従来のVB.NETのようにそう簡単にはコーディングができませんので困っています・・・
    お時間があれば書いて頂いてそれで構いませんので宜しくお願い致します。

    2013年5月13日 7:54
  • 誤解されているようにお見受けします。

    ストアアプリの環境で作るのはなんにせよ自分は初めてで従来のVB.NETのようにそう簡単にはコーディングができませんので困っています・・・

    確かに、上位層(=ユーザーインターフェース層(コントロールなど))と、下位層(ファイルアクセスや通信など)は従来のデスクトップアプリとは大きく異なる部分があります。
    (注意:上位層に関して言えば、WPF でデスクトップアプリの世界である程度似た概念があるので、大きく異なるという言い方は正しくない)

    しかしながら、今回のあなたの要望は、ストアアプリだからといって従来の方法が使えないわけではありません。
    あなたの発言からすると、デスクトップアプリの経験であればできるとのことですので、一度モデリングしてみてはいかがでしょうか。
    単なるクラスを作って、それに代入するだけなら、ストアアプリもデスクトップアプリも変わりません。

    • 回答としてマーク kuratimoto 2013年6月14日 8:15
    2013年5月13日 13:55
    モデレータ
  • 多忙につき、返信が遅くなり大変申し訳ございません。

    とりあえず色々と考えてみることにします。

    2013年6月14日 8:15