0

RegExを使用してURLを2つの部分に分割したい。xml 応答をデータテーブルに保存し、foreach を使用して各行を反復処理します。regEx に datatable 値を使用すると、0 のみが使用可能になります。配列インデックス 1 を使用すると、次の例外が発生します。

System.IndexOutOfRangeException: Index was outside the bounds of the array.

以下は例外です。

foreach (DataRow row in ndt.Rows)
{
    string imgurl =row["image1"].ToString();

    String[] fimgurl = Regex.Split(imgurl, @"small/");
    String  simgurl = fimgurl[1];
}

以下 問題なく動作しています。

foreach (DataRow row in ndt.Rows)
{
    //TextBox1.Text = row["ImagePath"].ToString();
    string imgurl ="http://www.hotelbeds.com/giata/small/12/124356/124356a_hb_w_001.jpg";
    String[] fimgurl = Regex.Split(imgurl, @"small/");
    String  simgurl = fimgurl[1];
}

My Datatable に文字列と同じ URL を保存しました。何が問題なのかわかりませんでした。誰でもこれについて私を助けてもらえますか?

4

5 に答える 5

5

問題に直面したときに、「分かった、正規表現を使用する」と考える人もいます。現在、彼らには 2 つの問題があります。-- ジェイミー・ザウィンスキー

var uri = new Uri("http://www.hotelbeds.com/giata/small/12/124356/124356a_hb_w_001.jpg");

var firstPart = uri.Host + String.Concat(uri.Segments.Take(3));
  // returns: "www.hotelbeds.com/giata/small/"

var lastPart = String.Concat(uri.Segments.Skip(3));
  // returns: "12/124356/124356a_hb_w_001.jpg"

が必要な場合はhttp、 を使用できますuri.Scheme3別の場所で分割したい場合は、明らかに別の番号に変更してください。

uri.Segmentsさらに、変更された場合に必要なディレクトリのインデックスを検索できます。

于 2013-07-19T08:36:40.227 に答える
1

それはそれだけを意味することができます

string imgurl =row["image1"].ToString();

あなたが提供する価値と等しくありません。コードをデバッグして、変数の正確な値を確認してくださいimgurl

于 2013-07-19T08:36:21.867 に答える
0

あなたのグリッドにsmall/はURLにない画像があるかもしれませんので、以下のような条件を追加することをお勧めします

if(fimgurl.Length >1)
      String  simgurl = fimgurl[1];
于 2013-07-19T08:45:39.313 に答える