使用 RegEx 拆分 URL

Sir*_*nam 0 html c# regex asp.net

我想使用 RegEx 将 url 分成两部分。我已将 xml 响应保存到数据表中,并使用 foreach 遍历每一行。当我使用 regEx 的数据表值时,只有 0 可用。当我使用数组索引 1 时,它给出以下异常。

System.IndexOutOfRangeException: Index was outside the bounds of the array.
Run Code Online (Sandbox Code Playgroud)

以下是给出和异常。

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

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

下面它工作没有任何问题。

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];
}
Run Code Online (Sandbox Code Playgroud)

我在我的数据表中保存了与字符串相同的 url。我找不到这有什么问题。任何人都可以帮我解决这个问题吗?

dav*_*v_i 5

有些人在遇到问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。——杰米·扎温斯基

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"
Run Code Online (Sandbox Code Playgroud)

如果需要http,可以使用uri.Scheme. 显然,3如果您想在不同的地方拆分,只需更改为其他数字即可。

此外uri.Segments,如果目录发生变化,您可以搜索所需目录的索引。