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的正则表达式可能需要一些工作.
我使用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)
这实际上是一个丑陋的问题.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.