Ios 在从字符串中剥离html时向while循环添加异常

Ios 在从字符串中剥离html时向while循环添加异常,ios,objective-c,xcode,Ios,Objective C,Xcode,因此,我使用此代码片段将HTML从发送到UIWebView的字符串中剥离出来: while ((r = [s rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound) s = [s stringByReplacingCharactersInRange:r withString:@""]; while((r=[s rangeOfString:@“]+>”选项:

因此,我使用此代码片段将HTML从发送到
UIWebView的字符串中剥离出来:

while ((r = [s rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound)
    s = [s stringByReplacingCharactersInRange:r withString:@""];
while((r=[s rangeOfString:@“]+>”选项:NSRegularExpressionSearch])。位置!=NSNotFound)
s=[s StringByReplacingCharactersRange:r,带字符串:@”“;

它消除了我需要消除的大部分内容(许多不必要的div,等等),除了我需要保留标签,如
,用于基本的格式化目的。有没有办法通过在while循环中创建一个异常来保留它们

你可以这样做

NSArray *tagsToKeep = @[@"<strong>",@"<p>"];
NSString *keyIn = @"|KEYIN|";
NSString *keyOut = @"|KEYOUT|";
/// Encrypt text
for (NSString *tagToKeep in tagsToKeep)
{
    NSString *encryptedTag = [tagToKeep stringByReplacingOccurrencesOfString:@"<" withString:keyIn];
    encryptedTag = [encryptedTag stringByReplacingOccurrencesOfString:@">" withString:keyOut];
    s =[s stringByReplacingOccurrencesOfString:tagToKeep withString:encryptedTag];
}

/// Parse
while ((r = [s rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound)
{
    s = [s stringByReplacingCharactersInRange:r withString:@""];
}

/// Decrypt text
for (NSString *tagToKeep in tagsToKeep)
{
    NSString *encryptedTag = [tagToKeep stringByReplacingOccurrencesOfString:@"<" withString:keyIn];
    encryptedTag = [encryptedTag stringByReplacingOccurrencesOfString:@">" withString:keyOut];
    s =[s stringByReplacingOccurrencesOfString:encryptedTag withString:tagToKeep];
}
NSArray*tagsToKeep=@[@“”,@“”;
NSString*keyIn=@“| keyIn |”;
NSString*keyOut=@“| keyOut |”;
///加密文本
for(tagsToKeep中的NSString*tagToKeep)
{
NSString*encryptedTag=[tagToKeep StringByReplacingOfString:@”“with String:keyOut];
s=[s stringByReplacingOccurrencesOfString:tagToKeep with string:encryptedTag];
}
///解析
while((r=[s rangeOfString:@“]+>”选项:NSRegularExpressionSearch])。位置!=NSNotFound)
{
s=[s StringByReplacingCharactersRange:r,带字符串:@”“;
}
///解密文本
for(tagsToKeep中的NSString*tagToKeep)
{
NSString*encryptedTag=[tagToKeep StringByReplacingOfString:@”“with String:keyOut];
s=[s stringByReplacingOccurrencesOfString:encryptedTag with String:tagToKeep];
}

更新:与上一评论中的“Sam B”相同的解决方案

你可以在这里耍点小把戏。首先将所有更改为~strong~。然后移除所有标签,然后将所有~strong~切换回。这非常有效。谢谢