我正在尝试使用UIWebView显示带有图像的文本。 该文本内部有一些链接,例如:
“我曾经养过一条鱼
http://mysite.com/images/fish.jpg
。 我还拥有一只小狗和一只公鸡http://mysite.com/images/dog.jpg
“
会导致:
我曾经养过一条鱼
----------------------------------
| |
|Fish Image From |
|http://mysite.com/images/fish.jpg|
| |
| |
----------------------------------
我还拥有一只小狗和一只公鸡
----------------------------------
| |
|dog Image From |
|http://mysite.com/images/dog.jpg|
| |
| |
----------------------------------
--------------------------------------
| |
|rooster Image From |
|http://mysite.com/images/rooster.jpg|
| |
| |
--------------------------------------
NSMutableString *mutableString = [[NSMutableString alloc] initWithFormat:@"<html><head></head><body>%@</body>",string];
NSString *pattern = @"http://.+\\.(?:jpg|jpeg|png|gif|bmp)";
NSString *replacement = @"<br /><img style=\"width:100%;height:auto;\" src=\"$1\"/><br />";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern
options:0 error:NULL];
[regex replaceMatchesInString:mutableString
options:0
range:NSMakeRange(0, mutableString.length)
withTemplate:replacement];
但是当我检查结果时,图片会显示:<br /><img style="width:100%;height:auto;" src=""/><br />
并且链接已消失。
图片必须是:
文字...
<br /><img style="width:100%;height:auto;" src="http://mysite.com/images/fish.jpg"/><br />
文字......
<br /><img style="width:100%;height:auto;" src="http://mysite.com/images/dog.jpg"/><br />
<br /><img style="width:100%;height:auto;" src="http://mysite.com/images/rooster.jpg"/><br />
答案 0 :(得分:1)
我认为$1
要正常工作,您需要将匹配的模式放在一个组中,即在()
内。如何使用以下模式:
(http://.+\\.(?:jpg|jpeg|png|gif|bmp))
同样从.+
部分的模式我吃了整个字符串。为了减少贪婪,可以使用.+?
或更正确的\w.*?
替换它,以保持+
在原始模式中的效果。