• ベストアンサー

複数の空白のsplitについて

VB.NEtを最近はじめた初心者です。 CSVファイルを読み込んでデータを空白でsplitして 配列に格納しようとしたのですが、 CSVファイルのデータの間にある空白の数が1~3個 と一定ではなかったためうまくsplitできません。 どのように対処すればよいでしょうか。 ご教授願います。

  • Tyo8
  • お礼率40% (4/10)

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

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

#1の例がでたらめだったので、訂正 Dim strArray() As String Dim oneLine as String Dim re As Regex re = New Regex("\s+")'空白文字の連続で区切られる 'oneLine = sr.ReadLine() 'oneLineには一行読み込みされている strArray = re.Split(oneLine)

Tyo8
質問者

お礼

どうもありがとうございました。 無事解決できました。

その他の回答 (1)

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

Regex.splitを使って Regex r = new Regex("\s+") string[] s = r.Split("one two banana") みたいな感じでうまくいきませんかね (未確認)

関連するQ&A

  • VB6・Split関数・連続した空白について

    お世話になります。 VB6で、データ処理を行いたいと思っています。データを読み込んで、列ごとに配列へ格納することを考えています。 しかし、データによって列の数が異なっており、行き詰ってしまいました。 最初は3列のデータだったので、単に Input #(ファイル番号), A(i), B(i), C(i) としたのですが、後になって6列やら、8列のデータが出てきて、通用しなくなりました。 そこで、LineInputで1行ごとに読み込み、Splitを使って値を列ごとに配列へ格納しようと考えました。 しかし、データを見ると値を区切っている空白は複数(3~8程度)で、 うまくSplitできませんでした。 以前にも、VB.NETの場合での似たような質問がされていましたが、VB6ではどのようにしたらよいのでしょうか。 当方初心者なのでお恥ずかしい質問ですが、よろしくお願いします。

  • Excel(VBA)で配列の要素数を調べるには?

    お世話になります。 ExcelのVBAで、split関数を使って配列に格納したデータの要素数を調べる方法がわかりません。 下記のようなコードで、読み込んだデータを配列(Arraydata)に格納することは出来たのですが、test.csvの要素数が処理の度に変わるため、要素数に応じて後続の処理を行ないたいと考えています。 Open test.csv For Input As #1 ' test.csvファイルを開く Line Input #1, test.csv ' データ行を読み込む Arraydata = Array(Split(test.csv, ",")) ' 配列に格納 よろしくお願いします。

  • splitの使用方法

    String.split の使用に関してです。 ファイルから一行づつ読み出して split で切って配列にしたいと考えています。 ファイルの中身は 1|ssm3u|00000| 2|ssm3u|11111| のように「|」区切りになっています。 通常のcsv等、カンマ区切りのファイルは split(","); を使用して問題なくできたのですが、 split("|"); と書くと、 「|」ではなく、1文字ごとに切ってしまいます。 どうすれば「|」ごとに切ることができるのでしょうか? あるいは、私のプログラム記述ミスでしょうか?

  • SQLでのsplitなどは?

    SQLでsubstrなどは使えますが、 splitなどは使えるのでしょうか? 現在 m_784378_0410 m_klds_0411 m_klsdas_0411 m_klsdas_0412 表示したいデータ 0410 0411 0412 というデータを 後ろの日付のみでグループ化したいのですが、 文字のサイズが固定ではないため、一度splitなどで配列に格納したいのですが、やり方がわかりません。 何かよい方法があれば教えてください。

  • 任意の区切り文字でsplitする方法

    VBAで任意の区切り文字でsplitする方法を教えてください。 例えば 123 456 789 333 3444 66 65 22 といようなスペースあるいはタブで区切られたテキストデータがあるとします。 これを配列に格納したいのですが、 この区切りがタブ一つとか、スペース一つとか決まっていれば split関数で簡単に配列に格納することができますが、 タブかも知れないし、スペースがかも知れないし その数も未定の場合にはどうしたら良いですか? replace関数を使って、まず全てのタブをスペースに変換し その後に、複数のスペースを一つのスペースに変換し 最後にsplit関数を使うという方法しかないでしょうか? もっとスマートな方法があれば教えてください。

  • C# Splitと配列の複合方法

    こんにちは、 ”てすと、です。¥四月、寒い。” のような文字列があり これを¥で区切り、さらにカンマで区切って(Splitでここはできたのですが) 結果を下記のように配列に格納したいと思うのですが、どのように記述すればよいでしょうか? 配列(0,0)=”てすと” 配列(0,1)=”です。” 配列(1,0)=”四月” 配列(1,1)=”寒い。” 文字列の内容が定まっていないため配列の要素数が変動してするものでして。

  • preg_splitがうまくいかないので、教えてく

    9月18日(火)7時55分を配列へ格納したいです。 ■1 $data = preg_split("/月|日|\(.\)|時|分/",$data); とやると、うまく区分けされないところがあります。 Array (  [0] => 9  [1] => 18  [2] => (火)7  [3] => 55 ) ■2 preg_split("/月|日|\(*\)|時|分/",$data);とやると、 曜日のところが変な感じになります Array (  [0] => 9  [1] => 18  [2] => (火  [3] => 7  [4] => 55 ) ■3 preg_split("/月|日|\(.*\)|時|分/",$data); もしくは、 preg_split("/月|日|\(.*?\)|時|分/",$data); とやると、曜日が取得できません Array (   [0] => 9   [1] => 18   [2] =>   [3] => 7   [4] => 55 ) ■質問 ・きれいに区切るには、どう書けば良いでしょうか? ・後、正規表現も勉強したいので、それぞれなんで駄目なのか教えてください

    • ベストアンサー
    • PHP
  • CSVファイルを読み込み、ファイル名を変更。

    CSVファイルを読み込み、ファイル名を変更。 使用言語はperlです。perlは初心者です。 アルゴリズムが、 CSVファイルを読み込み→2次元配列に格納→ファイル名変更 という流れになっているプログラムを作成中です。 CSVファイルの中身は あ.txt , a.txt い.txt , b.txt う.txt , c.txt です。 CSVファイルを読み込み2次元配列に格納するプログラムは以下のようにしました。 ----------------------------------- $i= 0; open IN, "sample.csv"; while (<IN>) { my @data = (); @data = split (/,/); for (0..@data) {$jdata[$i][$_] = "$data[$_]";} $i++; } close IN; ---------------------------------------- 「あ.txt」を「a.txt」に変更しようとして、この中に rename $jdata[0][0] , $jdata[0][1] ; と書いてみましたが、変換されません。 どう書けばよいのでしょうか。よろしくお願いします。

    • ベストアンサー
    • Perl
  • VBScriptでCSVファイルを読み出したい

    現在VBScriptでCSVファイルを1行ずつ読み取って、2次元配列に格納するプログラムを作成しています。 CSVファイルの中身は、サンプルで shop,price,sales 001,500,700 003,1200,90 024,,18 という並びになっています。 実データは300件くらいです。 1行目のヘッダーを読み飛ばし、2行目のデータから1行ずつ読取、","でsplitを用いてまず1次配列に格納しています。 1次元配列のarrLine(0)=001、(1)=500、(2)=700と入ったデータを 2次元配列arrshopに順次保存?したいのです。 ---------------------------------------------- dim strLine '1行ずつ読込んだデータを持つ dim ntLineNum '行数のカウント dim arrLine '","で区切った要素を持つ一次元配列 dim arrshop '一次元配列になった要素を2次元配列として格納 Do until .AtEndOfStream   strLine = .ReadLine   if 0<>strComp("",Trim(strLine)) then ntLineNum = intLineNum + 1   end if   arrLine = split(strLine , ",")   arrshop = Array(arrLines,i) i = i + 1 loop ----------------------------------------- msgbox arrshop(2)(0) と指定すると「003」出るようにしたいです。 Array関数が上手くないような気もします・・・。 どなたかご教授お願いします(>_<。)

  • VB5でCSVデータをAccess97のDBへセット

    普段はVB.NETの開発をすこししているのですが VB5のプログラムの修正の依頼が来て困っています。 CSVのデータをVB5でAccess97のDBへデータセットしたいのですが VB.Netでは同様のプログラムを作成した事があるのですが VB5は全然仕様が違うので困っています。 VB5でCSVを読み込んで配列にセットするにはどのように したらいいのでしょか?CSVを行で読み込むところは なんとか調べてわかりましたが、VB5ではSplitや配列が使えそうに ないのでどのようにしたらいいのかわかりません。 よろしくお願いします。 現在のソース Dim strTextLine As String Dim strTxtDat As String intFileNo = FreeFile Open "c:\infile.csv" For Input As #intFileNo Do While Not EOF(intFileNo) Line Input #intFileNo, strTextLine Loop Close #intFileNo