将URL转换为C#字符串中的超链接的最简单方法?

Nat*_*kes 15 c# regex string hyperlink

我正在使用Twitter API,并希望将所有URL转换为超链接.

你想出这个最有效的方法是什么?

string myString = "This is my tweet check it out http://tinyurl.com/blah";
Run Code Online (Sandbox Code Playgroud)

This is my tweet check it out <a href="http://tinyurl.com/blah">http://tinyurl.com/>blah</a>
Run Code Online (Sandbox Code Playgroud)

sam*_*son 23

正则表达式可能是您执行此类任务的朋友:

Regex r = new Regex(@"(https?://[^\s]+)");
myString = r.Replace(myString, "<a href=\"$1\">$1</a>");
Run Code Online (Sandbox Code Playgroud)

匹配URL的正则表达式可能需要一些工作.

  • 我认为这很好,正则表达式是强大的,但是捕获而非空白比尝试在正则表达式中实现URL解析器要好得多.我可能会把它改成`(https?:// [^] +)`因为https并不常见. (2认同)

Red*_*ves 7

我使用jquery使用JSON API完成了同样的事情,这里是linkify函数:

String.prototype.linkify = function() {
    return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/, function(m) {
        return m.link(m);
    });
 };
Run Code Online (Sandbox Code Playgroud)


Der*_*ark 5

这实际上是一个丑陋的问题.URL可以包含标点符号(并以标题符号结尾),因此在将URL嵌入到普通文本中时,很难确定URL实际结束的位置.例如:

http://example.com/.
Run Code Online (Sandbox Code Playgroud)

是一个有效的URL,但它可以很容易地成为一个句子的结尾:

I buy all my witty T-shirts from http://example.com/.
Run Code Online (Sandbox Code Playgroud)

您不能简单地解析,直到找到空格,因为那样您将把句点作为URL的一部分.您也不能简单地解析直到找到句点或空格,因为句点在URL中非常常见.

是的,正则表达式是你的朋友,但构建适当的正则表达式是困难的部分.

看看这个:用.NET中的Regex扩展URL.