• ベストアンサー

VB.netでのPerlのような配列操作

VB.net 2003 を使用してカンマ区切りのテキストファイルから データを読み込み、ソートや検索や絞込みをしたいと思っています。 Perlで記述する場合、SortやGrepでかなり自由な配列操作ができましたが、VB.netではGrepにあたるものが見当たりません。 データは1件ごとに暗号化したいので、XMLを使うのは現実的ではないのかなと考えます。 CSVを読み込み、インデックス的な配列を作成し ソート結果などに応じてテキストファイルから必要なデータを読む という事を行ないたいのですが、何かよい方法はありませんか? そもそも配列を使うこと自体ナンセンスなのでしょうか?

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

  • ベストアンサー
  • herencia
  • ベストアンサー率56% (120/211)
回答No.3

>PerlのGrepは配列から、条件にマッチしたデータを抜き出すものです。 >抽出を考えると、Datasetを使うのが良さそうですが、データベースを用意する必要があるのでしょうか? Datasetは既存のデータベースと接続させることもできますが、プログラム上で一時的にテーブルを作成してそこにデータを格納していくことができます。 ・データセットにテーブルを作成(DataSet.Tables.Add) ・作成したテーブルにデータ(DataRow)を登録(DataTable.Rows.Add) ・テーブルから条件を指定して抽出(DataTable.Select)  ※もしくはデータビューを作成して抽出(DataView) DataSet の作成および使用 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconCreatingUsingDataSets.asp DataTable の作成と使用 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconCreatingDataTables.asp DataTable.Select http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdatadatatableclassselecttopic.asp DataView の作成と使用 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconcreatingusingdataviews.asp

noppi_99
質問者

お礼

なるほど。 データセットでメモリ上にテーブルが保持できるのですね。 これにSQL文が発行できれば!と思いましたが データベースじゃないですからねぇ。。。 でもこの辺りに答えがありそうな感じなので もう少し調べてみます。 早速のフォローありがとうございます。

その他の回答 (2)

  • herencia
  • ベストアンサー率56% (120/211)
回答No.2

配列のソートは下記が参考になるかと思います。 http://ja.gotdotnet.com/quickstart/howto/doc/sort.aspx コレクションも便利です。 http://ja.gotdotnet.com/quickstart/howto/doc/queue.aspx http://ja.gotdotnet.com/quickstart/howto/doc/icollection.aspx PerlのGrepがどのようなものかわからないのですが、高度な検索を行うのであれば、配列ではなくDatasetを使うと便利です。下記が参考になるかと思います。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1848481 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1569948

noppi_99
質問者

お礼

ソートについては分かりましたが、抽出が難しいのかな?と思いました。 PerlのGrepは配列から、条件にマッチしたデータを抜き出すものです。 抽出を考えると、Datasetを使うのが良さそうですが、データベースを用意する必要があるのでしょうか? もう少し調べてみたいと思います。 ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

Perlの様な配列操作とはいかないかもしれませんが ArrayListのような不定長の配列を使うといいんじゃないでしょうか

noppi_99
質問者

お礼

なるほど。 ArrayListでインスタンスのリストを扱えるのですね。 さらにソート方法もクラスに持たせることが出来る。 参考になりました。 ありがとうございます。

関連するQ&A

  • 連想配列の操作方法について

    A,B,C,D,E 1,3,4,5,7 2,4,6,7,10 4,5,1,4,8 このようなコンマ区切りテキストファイルを読み込み、次のような配列をつくるには、どうのようにしたよいか悩んでいます。 ご教授ください。 [A,1,2,4],・・・,[E,7,10,8] (行と列を置き換えるように配列を作成したい)

    • ベストアンサー
    • Perl
  • 二次元配列について

    C#を使っています。 エクセルのデータを、カンマ区切り(CSV)にして保存しました。 そのデータをそのまま二次元配列に代入していきたいのですが、うまくできません(><) データの一行目しか代入しなかったりします。。二行目にうつってくれません。まだまだ初心者なのですが、どうか教えてください(><)

  • VB2005 でCSVファイルの読み込み

    VisualBasic2005でカンマ区切りのcsvファイルを読み込み、各項目を配列に取り込みたいのですが、どうすればいいのですか? VB6の時のように書くとエラーになります。 VB2005にはopen命令はないみたいですね。 Open ファイル名 For Input As #1 input #1,s(1),s(2),s(3) close #1 ちなみにcsvファイルの内容は "会社名(co.xxx,sss)","工場名","製品名(aaa,xxx)" のように各項目中にカンマやピリオドが入っています。 VB6はVBAではダブルコーテーションで囲めば正常に読み込めました。 どなたか教えて下さい。よろしくお願いします。

  • vbからのCSV出力について

    VB6.0について質問です。 CSV出力でデータ数がエクセルの限界を超えそうなので 統計ソフトのSPSSというソフトを使おうと思うのですが VBからSPSSへの連携はできるのでしゅうか? 現在、データをカンマ区切りで変数に格納し拡張子をCSVにして出力すると 自動的にCSVファイルが作成されますが SPSSでCSV出力させるにはどうやればよいですか? 当方SPSSは触ったことがないのでお知恵をお貸しください++

  • PHP arrayを使ってソートする。

    PHP初心者です。 教えてください。 現在複数のXMLファイルをPHPで取り込んで、それぞれ要素のデータを画面上に一行ずつ表示させています。 全件取り込んで、日時(要素)のデータでソートしたいです。 配列を使ってfor文を使えばできると思っていますが、参考にできるサンプルがあれば教えていただけますでしょうか。 カンマ区切り(?)で1回文字列にしてソートとかすればいいのでしょうか? イメージがつかめていません。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • VB2005 コントロール配列について教えていただけませんか?

    現在VB2005を用いてプログラムを行なっている初心者です。 ここのサイトでVB2005ではコントロール配列は使用できないことを知りました。そこで、例えばフォーム上にTextBoxを5個配置して、各TextBoxに入力された値を配列に格納するのにはどのようにすれば良いでしょうか? data(0) = textbox1.text data(1) = textbox2.textと一つずつやるしかないでしょうか・・・ For文などを用いて簡単にできる方法を教えてください。 よろしくお願い致します。

  • 2次元配列のデータをファイルへ保存

    教えて下さい。 a(100,200)の2次元配列のデータをファイルに保存したいのですが、 a(0,0),a(0,1),a(0,2).......a(0,200) a(1,0)....... a(2,0)... . . . a(100,0)...................a(100,200) といった感じでカンマ区切りでCSV形式で保存したいのですが、これを簡単にファイルに保存する方法を 教えて下さい。 よろしくお願いします。

  • VB2010でCSVファイルを読み、配列に入れる

    ExcelVBAで、フォルダを選択しCSVファイルを表示⇒クリックで対象ファイルを選び配列に入れる次のプログラムを作りました。その後でデータを加工しグラフィック化してるのですが、VBAのグラフィック機能が遅いのでVB2010に変えようと思いいろいろやってみたのですが、どうもうまくいきません。 どなたか、VB2010ではどのようなプログラムになるのか、教えていただけないでしょうか。 'Excel VBA---------------------------------------- Sub CSVデータ() Dim xd(1000),yd(1000) 'フォルダを選ぶ ChDir ThisWorkbook.Path 'CSVファイルの一覧 pname = _ Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv" _ , FilterIndex:=1,Title:="開く",MultiSelect:=False) '対象ファイルをクリックで選ぶ If pname <> False Then Workbooks.Open Filename:=pname End If fname = ActiveWorkbook.Name 'CsVファイルのセルから配列へ移す nstart = 6 nend = nstart +500 k = 0 For i = nstart To nend '6行目から500行の2列、3列を読み配列に入れる k = k + 1 xd(k) = Cells(i, 2) yd(k) = Cells(i, 3) Next i End Sub

  • perlでの三次元配列の作り方

    perlで三次元配列をテキスト入力から作りたいのですが、例えば二次元配列の場合 foreach $line (@input) push @data, [split /[:]/, $line]; で@dataが二次元配列になるのですが、三次元配列の場合このあとに push @output, \@data; とするとリファレンスが同じであるためループをまわしてもうまく三次元になりませんよね。 解決法はありますでしょうか?

  • perlでcsvファイルを読む(ダブルコーテーション内カンマを無視したい)

    perlでCSVファイルを読み込むスクリプトを作っています。 以下のようなCSVファイルがあります。 ■CSVファイル 東京,よろしくお願いします。 大阪,はじめまして 九州,"5,000円でお願いします" カンマで区切り、以下のようにすると、"5,000円"の部分が2つに分かれてしまいます。 ($data1,$data2) = split(/,/,$all_data) 前後にダブルコーテーションがあった場合、中のカンマで区切らないような良い方法はないでしょうか? 環境: Perl 5.8.5

    • ベストアンサー
    • Perl

専門家に質問してみよう