C# .包含 () 以检查它是否是 URL

本文关键字:是否是 URL 检查 包含 | 更新日期: 2023-09-27 18:36:19

我不喜欢发布这样一个笼统的问题,但我在这个话题上没有看到很多,所以我想知道是否有人做过这样的事情,以及这是否是一个很好的实现。

编辑 添加了整个方法

这是代码

 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";
            }
        }
    }

非常基本,而且有效。我的问题是:检查字符串是否包含 ://是否足以检查它是否是 url?我必须检查的原因是它正在从表中提取数据,表中的某些字段是文件名(mydoc.docx),在这种情况下,我将对它们执行其他操作。在 C# 中是否可以执行其他更可靠的检查?

C# .包含 () 以检查它是否是 URL

您可以使用

Uri.TryCreate来查看URL的创建是否成功:

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