hzx*_*zxu 7 objective-c nsstring nsattributedstring ios
如果我有一个字符串:
这是<b>简单</ b>字符串.
我需要摆脱<b>,(抱歉b和尖括号之间没有空格,由于某些原因预览没有显示),也让"简单"这个词变为粗体,我的想法是:
问题是一旦标签被删除,我仍然需要知道单词的位置,我是否首先记住'简单'的位置,删除后,位置-4应该是'简单'的新位置?有没有更好的方法?甚至将html标签转换为属性?
谢谢
编辑:应该是b而不是br
iOS 7中提供了API,这使得这非常简单.它会将NSString(可能的)HTML文本转换为NSAttributedString.
NSDictionary *options = @{ NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType };
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithData:[myHTMLString dataUsingEncoding:NSUTF8StringEncoding] options:options documentAttributes:nil error:nil];
Run Code Online (Sandbox Code Playgroud)
它甚至可以保留所有应用的内联CSS background-color!
请注意,如果HTML文本中未指定字体和字体大小,则默认为Times New Roman 12.您可以这种方式指定:<style>body { font-family:-apple-system; font-size:14px; }<style>.如果您没有通过CSS指定字体,您仍然可以覆盖字体,但是您需要手动处理粗体,斜体等,否则如果您为整个字符串设置字体,格式将会丢失.一种方法是enumerateAttribute: NSFontAttributeName在可变属性字符串中查找字体名称中的"粗体"等,如果找到它,则将其替换range为所需的字体,例如用户的首选字体和大小,但使用粗体等版本,并继续用range从枚举中获得的每个替换字体.
| 归档时间: |
|
| 查看次数: |
1822 次 |
| 最近记录: |