假设我有一个字符串:
这是一个简单的字符串。
我需要去掉 ,(抱歉 b 和尖括号之间没有空格,由于某种原因预览没有显示它),同时将“simple”这个词加粗,我的想法是:
- 将尖括号和 br 替换为空白
- 使“简单”段具有属性
问题是一旦标签被删除,我仍然需要知道单词的位置,我是否首先记住'simple'的位置,删除后,location-4应该是'simple'的新位置?还有更好的办法吗?或者甚至将 html 标签转换为属性?
Thanks
编辑:
应该是 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];
它甚至会保留应用的任何内联 CSS,甚至background-color
!
请注意,如果 HTML 文本中未指定字体和字体大小,则默认值为 Times New Roman 12。您可以通过以下方式指定它:<style>body { font-family:-apple-system; font-size:14px; }<style>
。如果您没有通过 CSS 指定字体,您仍然可以覆盖字体,但您需要手动处理粗体、斜体等,否则如果您为整个字符串设置字体,格式将会丢失。一种方法是enumerateAttribute: NSFontAttributeName
在可变属性字符串上查找字体名称中的“粗体”等,如果找到则替换它range
使用所需的字体,例如用户首选的字体和大小,但粗体等版本,并继续用每个字体替换字体range
从枚举中得到。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)