HTML转iOS 字符串
项目中我们网络请求获取的字符串可能是html格式的,要想将其用UILabel显示会出现一些奇怪的乱码符号,下面我们来解决将html格式的字符转为iOS字符串的问题
情况一:
形如“"
1.\U73b0\U804c\U5de5\U4f5c\U6301\U7eed4\U4e2a\U6708\U4ee5\U4e0a
2.\U6708\U6536\U51652000\U5143\U4ee5\U4e0a\U3002
"”的字符串转成正常的iOS字符串
首先转成NSAttributedString类型
NSString * text=“"
1.\U73b0\U804c\U5de5\U4f5c\U6301\U7eed4\U4e2a\U6708\U4ee5\U4e0a
2.\U6708\U6536\U51652000\U5143\U4ee5\U4e0a\U3002
"”
NSAttributedString * attriStr=[[NSAttributedString alloc]initWithData:[text dataUsingEncoding:NSUnicodeStringEncoding] options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType} documentAttributes:nil error:nil];
NSString *message=attriStr.String;
这里得到的message是一个标准格式的html字符,可情况二的方法得到iOS的字符串
情况二:
形如“<p>1.\U73b0\U804c\U5de5\U4f5c\U6301\U7eed4\U4e2a\U6708\U4ee5\U4e0a</p>”
的标准html字符
可用如下方法转成iOS字符串
-(NSString *)filterHTMLString:(NSString *)html
{
NSScanner * scanner = [NSScanner scannerWithString:html];
NSString * message = nil;
while([scanner isAtEnd]==NO)
{
[scanner scanUpToString:@"<" intoString:nil];
[scanner scanUpToString:@">" intoString:&message];
html = [html stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@>",message] withString:@""];
}
return html;
}
这样调用以上方法就可以把收到的json数据中的html字串符转化成iOS的字符串,并显示到UILabel上了