![](/img/trans.png)
[英]Using regex to split a formatted string to URL like StackOverFlow
[英]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.