C#.Contains()来检查它是否是一个URL

时间:2012-06-04 21:44:43

标签: c# string

我不想发布这样的一般性问题,但我没有看到很多关于这个话题,所以我想知道是否有人做过这样的事情,以及这是否是一个很好的实现跟着去吧。

编辑添加了整个方法

这是代码

 protected void gridViewAttachments_HtmlDataCellPrepared(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewTableDataCellEventArgs e)
    {
        //if (e.DataColumn.FieldName == "AttachmentName" && e.CellValue.ToString().ToLower().Contains("://"))
        //    attachmentUrl = e.CellValue.ToString();
        //if (e.DataColumn.FieldName == "AttachmentName" && !e.CellValue.ToString().ToLower().Contains("://"))
        //    attachmentUrl = "http://" + e.CellValue;
        Uri targetUri;
        if (Uri.TryCreate("http://" + e.CellValue, UriKind.RelativeOrAbsolute, out targetUri))
        {
            attachmentUrl = new Uri("http://" + e.CellValue);
        }

        if (e.DataColumn is DevExpress.Web.ASPxGridView.GridViewDataHyperLinkColumn)
        {
            if (attachmentUrl.ToString() == "")
            {
                DevExpress.Web.ASPxEditors.Internal.HyperLinkDisplayControl hyperlink =
                    (e.Cell.Controls[0] as DevExpress.Web.ASPxEditors.Internal.HyperLinkDisplayControl);
                hyperlink.Target = "_blank";
                hyperlink.NavigateUrl = ApplicationUrl + "/Attachment.ashx?key=" + hyperlink.Text;
                hyperlink.Text = GetWords("GENERAL.VIEW_ATTACHMENT");
            }
            else
            {
                DevExpress.Web.ASPxEditors.Internal.HyperLinkDisplayControl hyperlink = (e.Cell.Controls[0] as DevExpress.Web.ASPxEditors.Internal.HyperLinkDisplayControl);
                hyperlink.Target = "_blank";

                hyperlink.NavigateUrl = attachmentUrl.ToString();
                hyperlink.Text = "Go to URL";
            }
        }
    }

非常基本,而且有效。我的问题是:检查字符串是否包含://足以检查它是否是网址?我必须检查的原因是它是从表中提取数据,表中的一些字段是文件名(mydoc.docx),在这种情况下我将用它们做其他事情。我可以用C#做​​另一个更强大的检查吗?

1 个答案:

答案 0 :(得分:8)

您可以使用Uri.TryCreate来查看网址的创建是否成功:

Uri targetUri;
if (Uri.TryCreate("http://" + e.CellValue, UriKind.RelativeOrAbsolute, out targetUri))
{
    //success
    attachmentUrl = "http://" + e.CellValue;
}