我从Web服务获取数据,结果包含一些HTML标记,然后我尝试转换。例如,我想将<P>
标记替换为换行符,将<STRONG>
替换为HTML格式的粗体文本。
任何人都可以帮助我吗?我已经解决了如何替换文本的问题 - 我认为我已经到了一半了。
if([key isEqualToString:@"Description"]){
txtDesc.text=[results objectForKey:key];
NSString * a = txtDesc.text;
NSString * b = [a stringByReplacingOccurrencesOfString:@"<strong>" withString:@"STRONG TAG"];
b = [b stringByReplacingOccurrencesOfString:@"<\\/p>" withString:@""];
b = [b stringByReplacingOccurrencesOfString:@"</p>" withString:@""];
txtDesc.text=b;
}
答案 0 :(得分:4)
字符串没有粗体等属性。字符串仅包含字符串,包括断路器。如果要使用属性丰富字符串,请查看NSAttributedString。
更新: 对于我们这些无法看到的人,为什么属性字符串是解决方案,只需一段简单的代码:
- (NSAttributedString*)attributedStringByReplaceHtmlTag:(NSString*)tagName withAttributes:(NSDictionary*)attributes
{
NSString *openTag = [NSString stringWithFormat:@"<%@>", tagName];
NSString *closeTag = [NSString stringWithFormat:@"</%@>", tagName];
NSMutableAttributedString *resultingText = [self mutableCopy];
while ( YES ) {
NSString *plainString = [resultingText string];
NSRange openTagRange = [plainString rangeOfString:openTag];
if (openTagRange.length==0) {
break;
}
NSRange searchRange;
searchRange.location = openTagRange.location+openTagRange.length;
searchRange.length = [plainString length]-searchRange.location;
NSRange closeTagRange = [plainString rangeOfString:closeTag options:0 range:searchRange];
NSRange effectedRange;
effectedRange.location = openTagRange.location+openTagRange.length;
effectedRange.length = closeTagRange.location - effectedRange.location;
[resultingText setAttributes:attributes range:effectedRange];
[resultingText deleteCharactersInRange:closeTagRange];
[resultingText deleteCharactersInRange:openTagRange];
}
return resultingText;
}
但是我没有很好地测试它,因为我必须在编程时准备一份意大利调味饭。 ; - )
答案 1 :(得分:0)
如前所述,您需要使用NSAttributedString
它实现了以下方法,您将传递属性的NSDictionary和范围(characteres)以接收属性
- (void)setAttributes:(NSDictionary *)attributes range:(NSRange)range;
NSDictionary的一个例子是:
@{ NSFontAttributeName: [UIFont systemFontOfSyze:24], NSForegroundColorAttributeName: [UIColor greenColor]}
您可以查找有关Apple文档的更多信息 https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSAttributedString_Class/Reference/Reference.html
或斯坦福大学惊人的 iPhone应用程序开发课程的第4讲 http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2013-winter