c#,查找String是否具有图像链接并将其替换为html超链接

时间:2013-01-17 20:19:26

标签: c# asp.net image

我想取一串文字,看看是否有链接到图像并用html超链接替换它,所以它看起来是嵌入式的。

例如:

Look at this image www.xyz/abcd.jpg

当我想要显示它时,我想嵌入图像:

look at this image <img src="www.xyz/abcd.jpg" alt="" />

像这样。

4 个答案:

答案 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=\"\">");