我想取一串文字,看看是否有链接到图像并用html超链接替换它,所以它看起来是嵌入式的。
例如:
Look at this image www.xyz/abcd.jpg
当我想要显示它时,我想嵌入图像:
look at this image <img src="www.xyz/abcd.jpg" alt="" />
像这样。
答案 0 :(得分:1)
可能类似以下内容:
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);
答案 1 :(得分:1)
很难做到这一点,但你可以尝试这样的事情:
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
或.jpg
结尾的所有内容,并使用Replace
中的捕获组将{{1>}包围起来标记。
这是一个快速demo on ideone。输出如下:
src="..."
答案 2 :(得分:1)
尝试这样简单的事情:
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="">
网址格式来自http://net.tutsplus.com/tutorials/other/8-regular-expressions-you-should-know/
答案 3 :(得分:0)
使用以下正则表达式:
Regex.Replace(url, @"(https?:?//?[^'<>]+?\.(?:jpg|jpeg|gif|png))", "<img src=\"$0\" alt=\"\">");