gpt4 book ai didi

objective-c - 用文本属性替换 HTML 标签

转载 作者:行者123 更新时间:2023-12-03 16:54:39 25 4
gpt4 key购买 nike

我正在从 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;

}

最佳答案

字符串没有粗体等属性。字符串仅包含字符(包括换行符)。如果您想用属性丰富字符串,请查看 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;
}

但是我没有很好地测试它,因为我必须在编程时准备一份烩饭。 ;-)

关于objective-c - 用文本属性替换 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16426610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com