如何从iphone中删除NSString中的HTML标记?

我正在工作日历function为我的应用程序UITextview我今天点击date或明天的date或一些其他date需要在UITextview显示吉祥的细节。我一直在尝试格式化我的文本视图中的string,但我无法工作出来。 我很新的xcode.I想要删除我的stringResonse中的HTML标签,并显示在UITextview

我在我的代码中是这样写的:

 -(void)connectionDidFinishLoading:(NSURLConnection *)connection { [UIApplication sharedApplication].networkActivityIndicatorVisible=NO; if(connection==urlConnection) { NSString *strResponse=[[NSString alloc]initWithData:responseData encoding:NSUTF8StringEncoding]; NSLog(@"String Response is : %@",strResponse); NSMutableString *mutString=[NSMutableString string]; NSString *s=nil; NSString *s1=nil; //NSArray *arr1=[strResponse componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<br>"]]; NSArray *arr2=[strResponse componentsSeparatedByString:@"\n"]; NSLog(@"array %@",arr2); for(s in arr2) { s = [s stringByReplacingOccurrencesOfString: @"<br>" withString: @"\n"]; s1=[s stringByReplacingOccurrencesOfString:@"<font color>" withString:@" "]; [mutString appendString:@""]; [mutString appendString:s1]; } text1.text=[text1.text stringByAppendingString:mutString]; } } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. strZone=[[NSString alloc]init]; dict=[[NSDictionary alloc]init]; text1=[[UITextView alloc]initWithFrame:CGRectMake(10, 280, 300, 120)]; text1.font=[UIFont fontWithName:@"Helvetica" size:12]; text1.font=[UIFont boldSystemFontOfSize:12]; text1.backgroundColor=[UIColor whiteColor]; text1.editable=NO; [self.view addSubview:text1]; } 

这是我的string响应。

  S.Panchami 01.38<br>Arudra 02.01<br>V.08.54-10.39<br>D.05.02-06.52<br> <font color=red><u>Festival</u></font><br><font color=blue>Shankara Jayanthi<br></font> 

但是,如果用户在日历中点击date,我想要显示这样的内容

S.Panchami 01.38

阿鲁德拉02.01

V.08.54-10.39

D.05.02-06.52

Shankara Jayanthi

iOS 7简单的解决scheme:

 NSString *html = @"S.Panchami 01.38<br>Arudra 02.01<br>V.08.54-10.39<br>D.05.02-06.52<br> <font color=red><u>Festival</u></font><br><font color=blue>Shankara Jayanthi<br></font>"; NSAttributedString *attr = [[NSAttributedString alloc] initWithData:[html dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute:@(NSUTF8StringEncoding)} documentAttributes:nil error:nil]; NSLog(@"html: %@", html); NSLog(@"attr: %@", attr); NSLog(@"string: %@", [attr string]); NSString *finalString = [attr string]; 

如果你使用ios 7,那么你可以应用这个代码

 [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]} documentAttributes:nil error:nil]; 

对于低于ios 7的ios使用此代码,

 (NSString *) stringByStrippingHTML { NSRange r; NSString *s = [[self copy] autorelease]; while ((r = [s rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound) s = [s stringByReplacingCharactersInRange:r withString:@""]; return s; } 

这应该删除< >之间的所有内容

 NSString * yourString = @"<br>Arudra 02.01<br>V.08.54-10.39<br>D.05.02-06.52<br> <font color=red><u>Festival</u></font><br><font color=blue>Shankara Jayanthi<br></font>"; NSRange r; NSMutableString * cleanString = [NSMutableString stringWithString:yourString]; while ((r = [cleanString rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound) cleanString = [cleanString stringByReplacingCharactersInRange:r withString:@""]; 

正则expression式的选项是使用NSScanner

 - (NSString *)removeHTML:(NSString *)str { NSMutableString *pureStr = [NSMutableString stringWithCapacity:[str length]]; NSScanner *scanner = [NSScanner scannerWithString:str]; scanner.charactersToBeSkipped = NULL; NSString *tmp = nil; while (![scanner isAtEnd]) { [scanner scanUpToString:@"<" intoString:&tmp]; if (tmp != nil) [html appendString:tmp]; [scanner scanUpToString:@">" intoString:NULL]; if (![scanner isAtEnd]) [scanner setScanLocation:[scanner scanLocation] + 1]; tmp = nil; } return pureStr; } 

我build议你使用一个UIWebView 。 如果您使用的是UITextView ,首先必须去除HTML标签,然后为了格式化目的而必须插入换行符\n 。 用简单的HTML格式(如<html><head/><body><your string response><body/></html>包装string响应并将其显示在UIWebView会容易得多。