C# String型の配列が表示できません

このQ&Aのポイント
  • C#学習のため、クッキーを取得してmixiのログを表示するサンプルプログラムを作成していますが、String型の配列の値が表示できません。
  • foreachを使えば取得した内容を表示できるようですが、要素を指定して値を取得しようとすると配列の値が「""」になってしまいます。
  • C#特有の現象なのか、原因を特定したいです。
回答を見る
  • ベストアンサー

C# String型の配列が表示できません

C# String型の配列が表示できません C#学習のため、下記サイトを参考にして、クッキーを取得してmixiのログを表示するサンプルプログラムを作成してみたのですが、 最後の取得した内容を表示するところでstring配列の値が「""」になっており、表示することができません。 foreachを使うと取得した内容を表示できるようですが、t[0]のように要素を指定して値をとりだそうとすると、なぜか配列の値が[""]になります。 これはC#特有の現象でしょうか? 参考サイト: http://www.atmarkit.co.jp/fdotnet/dotnettips/326cookie/cookie.html ソースダウンロードページ: http://www.atmarkit.co.jp/fdotnet/dotnettips/326cookie/mixilog.cs ちなみに、現在使用しているC#はVisual C# 2010です。 自分が変更した箇所は、 最後の「if (line.IndexOf("年") >= 0)」を「if (line.IndexOf("月") >= 0)」に変更したことです。

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

  • ベストアンサー
回答No.1

t[0]とか取り出す前の、Splitに掛ける文字列lineにはどんな値が入っていますか? line自身が""だったり、最初の文字が区切り文字だったりしたら、t[0]は""になります。  ソースはmixiのログを切り出してるみたいですが、書かれたのがずいぶん昔ですから、仕様変更等で実情にあっていない場合も十分に考えられます。途中のデータ等の処理も正しく行われているのか、一個一個確認しておいたほうが良いかと思われます。

qwerty2501
質問者

お礼

ご回答していただきありがとうございます。 ご指摘の通り、mixiの使用が変更になっているようでして、t[0]とt[2]にはなにも要素がはいっていないため、なにも表示されていませんでした。 本当に初歩的なことを聞いてしまってお恥ずかしい限りではございますが、これで学習をすすめることができます。重ねてお礼を申し上げます。

関連するQ&A

  • String配列とHashMap

    メソッドの引数の数がとても多いので、String配列かHashMapにまとめて、値を渡すことになりました。 どちらを使うかなのですが、私の記憶だとString配列とHashMapの違いを次のように認識してるのですが、調べても答えが見つかりません。合ってるか教えてください。 String配列は、インデックスを検索しつつ値を取得してるので、インデックスの大きい番号ほど、値取得時の処理に時間を使う。HashMapは、特別な検索方法(?)で検索してるので、値取得時の処理に、時間をかけずにすむ。 なので、メソッドの引数として使うのはHashMapの方がよい。 メソッドの引数という性格上、要素数を固定しなくてもいいHashMapの方が使いやすいと思ってるのですが、現場のリーダーさんの認識とずれちゃってます。説得したいので、この辺りのことが解説されているサイトがありましたら、合わせて教えていただけると嬉しいです。

    • ベストアンサー
    • Java
  • C#におけるstringとstring[]データの変換

    お世話になります。C#をはじめて使っています。 いま行おうとしているのがコモンダイアログからファイル名を取得して、CSVファイルを読み出そうとしています。 OpenFileDialogから出力されるファイル名はstring[]と配列になり(すいません、C#でも”配列”といっていいのですよね?) CSVを開くためのTextFieldParserの引数はstringになります。Cならポインタで変換できるのですが、C#はポインタがないため、いくつか試しましたが、うまく変換でききませんでした。 たとえば string a; string[] b: で  a=b; a=(string)b; a=convert.tostring b; 全部だめでした、どなたかご存知の方お見えになれば教えていただけると助かります。

  • C#で配列の戻り値について

    プログラミング初心者で、ただいまC#の勉強中です。 bool型(trueまたはfalse)とstring型(関数内で取得した文字列)の値を 配列で関数の戻り値として返したいのですが、どうすれば良いのかわかりません。 true/falseもstringとして呼び出し側で判別するしか方法はないのでしょうか。 アドバイスをお願いいたします。

  • C# 配列の配列(多次元配列?)

    C#において、配列の配列中に格納した値を、検索することを 行いたいのですが、格納した値そのものを見ることができません。 まだ、C#を始めて間もないので、配列に格納する時点で、 不備があるかも知れませんが、お願いします。 やりたいこと ・テキストファイル内にある値を、2次元配列または、多次元配列に格納 ・配列に格納した値で、データチェックなどを行う予定  テキストファイル内のデータは、下記内容となり要素数も固定ではなく変動する   A=1,2,3・・・   B=11,22,33・・・ 実際のソースは、 //配列 ArrayList list = new ArrayList(); //配列格納 1レコード毎用 ArrayList listtmp = new ArrayList(); while ((strGenderTextLine = objReader.ReadLine()) != null) {  string strBuffer;  //「=」前の値格納用変数  string[] strBuffer2; //「=」後の値格納用配列  listtmp=null;  //strtmpに「=」前の値を格納  strtmp = TextLine.Split('=').GetValue(0).ToString();  //strtmp2に「=」後の値を格納(配列)  strtmp2 = TextLine.Split('=').GetValue(1).ToString().Split(',');  for (int i = 0; i <= strtmp2.Length - 1; i ++)  {   //[i,0]に、「=」前の値を代入   if (i == 0)   {   listtmp.Add(strtmp);   }   else   {   listtmp.Add(strtmp2[i].ToString());   }  }  //list配列にlistTmp配列を格納(配列の配列)  list.Add(listtmp);  intT = intT + strtmp2.Length;  //行数カウント  intTLine = intTLine + 1;  } ここから、配列「list」内に入っている値を閲覧することができる方法を教えていただければと思います。 宜しくお願いいたします。

  • char型配列をString型にしたい

     VC++2005ExpressEdition + PlatformSDKを使用しています.  char型配列をString型にしたいと思っています(MessageBoxで表示するため).  int型ならば, > String^ out = String::Format("{0}", i ); > MessageBox::Show(out); などとできます.  下のアドレス(*1)のNo.2の答えにあるように > char ss[256]; > String^ out; > out=ss; とすると > error C2440: '=' : 'char [128]' から 'System::String ^' に変換できません。 なるエラーが出ます(S を大文字にしたりハットを付けたりしています).  char型の配列のString型への変換はどのようにすればいいのでしょうか. (*1)http://oshiete1.goo.ne.jp/kotaeru.php3?q=479640

  • Stringの文字列に配列の値を追加させたい

    ヤフーのニュースの一ヶ月分のURLを取得させるプログラムを作成しています。 その際に、Dateという配列に取得した一ヶ月の日にちを代入させ、 それをヤフーのニュースのURLの後ろにパラメータの様に日付をつけることによって、 一か月分のニュースのURLを取得させたいと思ってます。 しかし、Stringの文字列に配列の値を追加させるにはどのようにすればいいか忘れてしまいました。 具体的には、以下の例のように、 例) Date[0] = 20060601 Date[1] = 20060602 Date[2] = 20060603 Date[3] = 20060604 String url = ""; for(int i=0;i<4;i++) url = "http://headlines.yahoo.co.jp/hl?c=soci&t=l&d=" この後ろに配列Dateの値をつける、例えば、Date[0]をつけて、 http://headlines.yahoo.co.jp/hl?c=soci&t=l&d=20060601のようにさせて、 String urlに代入させさせたいです。 このようにするには、 url = "http://headlines.yahoo.co.jp/hl?c=soci&t=l&d=" の後ろにどのように記述すればよいでしょうか? よろしくお願いします。

  • String配列を扱うアルゴリズムについて

    よりパフォーマンスの良いアルゴリズムが、 ございましたらご教示下さい。 数レコード分のDBテーブルデータが格納されたString[][]型が存在するとします。 配列の要素は、String[行(フィールド)][列(カラム)]です。 ここで、全レコード中の列ごとの最大文字列長を int[]型に取得したいと思います。 そうした場合、自作した下記の処理よりも、 よいパフォーマンスを得られるアルゴリズムがございましたら、 ご教示願いたいと思います。 ※処理前提条件 ●String[][]型変数に、過不足無くテーブルデータが格納済みであるとします。 ●配列の第一(行)・第二(列)要素の最大値は取得済みであるとします。 ////////////// // 変数定義 // ////////////// String[][] tableData; ← テーブルデータ格納済み(過不足はありません) int 行数 = 全行数(取得済み); int 列数 = 全列数(取得済み); //列毎の最長文字列値を格納する。 int[] maxLen = new int[列数]; ////////// // 処理 // ////////// //列の個数分、処理を繰り返す for(int i = 0; i < 列数; i++) {   //行の個数分、処理を繰り返す   for(int j = 0; j < 行数; j++) {     //NULLを回避する     if(tableData[i][j] != null) {       //int配列に格納済みの数値より大きければ、改めて格納する       if(maxLen[i] < tableData[i][j].length()) {         maxLen[i] = tableData[i][j].length();       }     }   } } 以上です、どなかお知恵をお貸し頂けませんか。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • C# クッキーを使ってウェブブラウザを表示したい

    C#プログラミングの質問です ニコニコ動画でCookieGetterSharpを使用してCookieを取得したのですが、取得したCookieを使ってwebBrowser1を表示したいのですが、どうやれば良いのかわかりません できればC#でご教授お願い致します string p = "http://www.nicovideo.jp/my"; webBrowser1.Navigate(p);

  • 配列をセッションに割り当てた後で

    javaBeanでDBにアクセスして、取得した値を配列に格納します。その配列をサーブレット側でgetメソッド使って取得し、セッションに割り当てます。その後、JSP側でセッションを通して配列の各要素を取り出し表示させたいのですが<%= session.getAttribute("Date") %>←(Dateが配列)では配列の各要素ではなく配列そのものが取り出されるのか、 [Ljava.lang.String;@737371 のような文字が表示されてしまいます。 セッションで割り当てられた配列の各要素の値の取得のやり方がわかる方どうかご教授お願いします。

    • ベストアンサー
    • Java
  • C#での動的配列作成方法について

    はじめまして、 現在ASP.NET、C#で開発をしております。 そこで、質問です。 C#で二次元配列を作成し、データを格納します。 二次元配列は宣言時はサイズがわかってません。 ループで回った回数分、最初(第一要素数)の要素数が決定します。 二つ目の要素数の数は最初からきまっています(固定用素数)。 string[][] string[,] arraylist などがあると思いますが、上記の場合どういう風に配列を作成していったらいいのでしょうか? 動的にサイズを変更できる配列の作り方、データ格納方法、データ表示方法を教えてください。 よろしくお願いします。

専門家に質問してみよう