【问题标题】:Regular expression to convert urls to hyperlinks in .Net在.Net中将url转换为超链接的正则表达式
【发布时间】:2009-01-01 00:35:11
【问题描述】:

在我的 ASP.NET 应用程序中,我想使用正则表达式将 URL 更改为用户帖子中的超链接,例如:

http://www.somesite.com/default.aspx   

<a href="http://www.somesite.com/default.aspx">http://www.somesite.com/default.aspx</a>

使用 Regex.Replace() 相当容易,但我遇到的问题是,如果 URL 太长,我想截断链接文本,例如:

http://www.somesite.com/files/default.aspx?id=a78b38ae723b1f8ed232c23de7f9121d&n=93b34a732e074c934e32d123de19c83d

<a href="http://www.somesite.com/files/default.aspx?id=a78b38ae723b1f8ed232c23de7f9121d&n=93b34a732e074c934e32d123de19c83d">http://www.somesite.com/files/default.aspx?id=a78b38ae723b1f8...</a>

使其显示如下:

http://www.somesite.com/files/default.aspx?id=a78b38ae723b1f8...

我尝试使用 Regex.Matches() 但我不知道如何替换文本,有什么建议吗?

感谢您的帮助...

编辑: 没关系,我自己想出来的,结果非常简单,我只是用了MatchEvaluator

public static string Replace(
    string input,
    string pattern,
    MatchEvaluator evaluator
)

【问题讨论】:

    标签: .net regex


    【解决方案1】:

    这是JUST using a Regex is trying to do too much 的示例。我建议使用正则表达式来查找模式,但使用代码逻辑来根据自己的喜好调整输出。输出带有替换的新模式并不太难,但试图控制链接文本的长度太过分了。

    【讨论】:

      【解决方案2】:

      AFAIK 对此没有开箱即用的支持。您确实必须自己遍历 Regex.Matches() 并自己进行替换(通过 string.Replace 或 StringBuilder),在需要的地方截断文本。

      【讨论】:

        【解决方案3】:

        您可以通过检查超链接(通过正则表达式)来完成转换,然后执行类似的操作...

        string displayText = url.Substring(0, maxLength);
        string hyperlink = string.Format("<a href=\"{0}\">{1}</a>", url, displayText);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-23
          相关资源
          最近更新 更多