簡體   English   中英

使用RegEx分割網址

[英]Using RegEx to Split the Url

我想使用RegEx將網址分為兩部分。 我已經將xml響應保存到datatable中,並使用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];
}

我已經在“我的數據表”中將相同的URL保存為字符串。 我找不到那是怎么回事。 有人可以幫我嗎?

有些人在遇到問題時會認為“我知道,我會使用正則表達式”。 現在他們有兩個問題。 傑米·扎溫斯基(Jamie Zawinski)

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.Scheme 顯然,如果要拆分到其他位置,只需將3更改為其他數字即可。

另外,您可以在uri.Segments中搜索要更改的目錄的索引。

它只能意味着

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

您提供的不等於價值。 嘗試調試代碼,找出變量imgurl確切值

我認為您的代碼沒有任何問題。

問題是您的網址中不包含“ small /”。 因此,Split函數將返回一個長度為1的數組,因此當您嘗試訪問索引1時會遇到異常。

如果需要更多詳細信息,則必須發布ndt的內容。

一種簡單的調試方法是將url打印到控制台,以便您可以看到該url:

foreach (DataRow row in ndt.Rows)
            {
    string imgurl =row["image1"].ToString();
    Console.WriteLine(imgurl)
    String[] fimgurl = Regex.Split(imgurl, @"small/");
    String  simgurl = fimgurl[1];
}

在您的網格中,URL中可能沒有small/圖像,因此最好添加如下所示的條件

if(fimgurl.Length >1)
      String  simgurl = fimgurl[1];

我認為您在列名中有一個錯誤:
在第一個變體中,您使用image1列,在第二個變體中,您使用ImagePath (在注釋中),也許您必須使用ImagePath列,例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM