【问题标题】:Remove port number in image url?删除图片网址中的端口号?
【发布时间】:2018-01-02 06:51:56
【问题描述】:

我尝试使用正则表达式获取图片网址,我的代码如下。

string IMG_REX_PATTERN = @"<[Ii][Mm][Gg][^>]*src\s*=\s*[\""\']?(?<IMAGE_URL>[^""'>\s]*)[\""\']?[^>]*>"; 
Match match = Regex.Match(result[i]["N_Dext5EditorField"].ToString(), IMG_REX_PATTERN, RegexOptions.IgnoreCase); 
string src = string.Empty; 
  if (match.Length > 0) 
 { 
     //portalUrl = https://test.beta.co.kr
     string portalUrl = DevelopmentHelper.GetPortalUrl(); 
     src = match.Groups[1].Value.Replace(portalUrl, ""); 
} 
else 
{ 
    src = ""; 
}

但是,有时 src 包含这样的端口号。

src = :443/dext5editordata/2017/12/20171228_191217524_37634.png

我想得到这样的url(不包括端口号)

src = /dext5editordata/2017/12/20171228_191217524_37634.png

我认为简单的方法是portalUrl + ":443",但端口号有时不同。

如何修复我的代码?请帮帮我。

【问题讨论】:

  • 为什么不根据: 拆分url 或者检查它是否包含: 然后使用IndexOf() 作为第一个/
  • 为什么不直接捕获完整的 URL 并将其放入 Uri 类?
  • 约翰,你是对的!

标签: c# regex split


【解决方案1】:
  Just update it  

  string src = ":443/dext5editordata/2017/12/20171228_191217524_37634.png";
  int firstindex=src.IndexOf("/");
  string witoutportno=src.Substring(firstindex);

你也可以在这里查看我的代码

http://rextester.com/CRS51521

【讨论】:

  • 但是您必须检查firstindex 是否不是-1,换句话说:网址中是否有斜杠。
【解决方案2】:

根据您的回复,我更改了代码。

if (match.Length > 0) 
{ 
     //portalUrl = https://test.beta.co.kr
     string portalUrl = DevelopmentHelper.GetPortalUrl(); 
     string tempsrc = match.Groups[1].Value; 

     var uri = new UriBuilder(tempsrc);
     string targetUrl = uri.Uri.ToString();
     src = targetUrl .Replace(portalUrl, "");
} 
else 
{ 
    src = ""; 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 2011-07-04
    • 2013-12-27
    • 2015-10-21
    相关资源
    最近更新 更多