将URL转换为C#字符串中的超链接的最简单方法?
我正在使用Twitter API,并希望将所有URL转换为超链接。
你想出这个最有效的方法是什么?
从
string myString = "This is my tweet check it out https://tinyurl.com/blah";
至
This is my tweet check it out https://tinyurl.com/>blah
正则表达式可能是您执行此类任务的朋友:
Regex r = new Regex(@"(https?://[^s]+)"); myString = r.Replace(myString, "$1");
匹配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); }); };
这实际上是一个丑陋的问题。 URL可以包含标点符号(并以标题符号结尾),因此在将URL嵌入到普通文本中时,很难确定URL实际结束的位置。 例如:
https://example.com/.
是一个有效的URL,但它可以很容易地成为一个句子的结尾:
I buy all my witty T-shirts from https://example.com/.
您不能简单地解析,直到找到空格,因为那样您将把句点作为URL的一部分。 您也不能简单地解析直到找到句点或空格,因为句点在URL中非常常见。
是的,正则表达式是你的朋友,但构建适当的正则表达式是困难的部分。
请查看此内容: 使用.NET中的Regex扩展URL 。
您可以通过使用正则表达式的MatchEvaluator委托函数来添加更多控件:假设我有这个字符串:
在https://www.stackoverflow.com上找到更多信息
现在试试这段代码
private void ModifyString() { string input = "find more on https://www.authorcode.com "; Regex regx = new Regex(@"b((http|https|ftp|mailto)://)?(www.)+[w-]+(/[w- ./?%&=]*)?"); string result = regx.Replace(input, new MatchEvaluator(ReplaceURl)); } static string ReplaceURl(Match m) { string x = m.ToString(); x = "< a href="" + x + "">" + x + ""; return x; }
/为红狼队加油
from:this.replace(/ [A-Za-z] +:// [A-Za-z0-9- ] +。[A-Za-z0-9- :%&?/.=] + / ,function(m){…
见:/ [A-Za-z] +:// [A-Za-z0-9- ] +。[A-Za-z0-9- :%&?/.=] + /
地址为“anyprotocol”的代码://“anysubdomain / domain”。“anydomainextension and address”,
它是字符串操作的其他用途的完美示例。 你可以随意切片和切块.replace并在需要的地方插入适当的“a href”。
我使用jQuery在我的内容加载逻辑中轻松地将这些链接的属性更改为“target = _blank”,即使.link方法不允许您自定义它们。
我个人喜欢在字符串对象上使用自定义方法进行快速字符串过滤(String.prototype.linkify声明),但我不确定这会在大规模环境中如何发挥作用必须组织10个以上的自定义类似链接的function。 我认为你必须在那时用你的代码结构做一些其他事情。
也许兽医会在这里绊倒并启发我们。
上述就是C#学习教程:将URL转换为C#字符串中的超链接的最简单方法?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/984904.html