我想获取一串文本并找出是否有图像链接并将其替换为 html 超链接,因此它看起来是嵌入的。
例如:
Look at this image www.xyz/abcd.jpg
当我想显示它时,我想嵌入图像:
look at this image <img src="www.xyz/abcd.jpg" alt="" />
像这样的东西。
也许类似于以下内容:
var str = "Look at this image www.xyz/abcd.jpg Look at this image http://www.xyz/abcd.jpg";
var words = str.Split(' ');
for (int i = 0; i < words.Length; i++)
{
var word = words[i];
if((word.EndsWith(".png") || word.EndsWith(".jpg")) &&
(word.StartsWith("http://") || word.StartsWith("www.")))
words[i] = "<img src=\"" + word + "\" alt=\"\" />";
}
var str2 = String.Join(" ", words);
可靠地做到这一点非常困难,但你可以尝试这样的事情:
var str = "quick.brown/fox.jpg http://jumps.over.the/lazy/dog.png";
var link = Regex.Replace(
str,
"\\b((?:(?:http|https)://)?[a-zA-Z./]+[.](?:jpg|png))\\b",
"<img src =\"$1\"/>");
Console.WriteLine(link);
.png
上面的正则表达式匹配以or结尾的任何内容.jpg
,并使用 中的捕获组用标记将Replace
其包围。src="..."
这是关于 ideone 的快速演示。输出如下所示:
<img src ="quick.brown/fox.jpg"/> <img src ="http://jumps.over.the/lazy/dog.png"/>
尝试这样简单的事情:
string l_input = "Look at this image www.xyz/abcd.jpg";
l_input = Regex.Replace(
l_input,
@"(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?(?<=jpg|png|gif)",
"<img src=\"$0\" alt=\"\">",
RegexOptions.IgnoreCase
);
// l_input = Look at this image <img src="www.xyz/abcd.jpg" alt="">
URL 模式来自http://net.tutsplus.com/tutorials/other/8-regular-expressions-you-should-know/
使用以下正则表达式:
Regex.Replace(url, @"(https?:?//?[^'<>]+?\.(?:jpg|jpeg|gif|png))", "<img src=\"$0\" alt=\"\">");