2013-11-01 37 views
0

我有一個iPhone應用程序,這是多麼我在使用的NSXMLParser一個RSS feed解析標題:的iOS的NSMutableString刪除<br>標籤

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
     currentString = [[NSMutableString alloc] init]; 
     [self setTitle:currentString]; 
} 

這工作完全正常。現在我正在處理另一個包含
標籤的標題,並且我想刪除它們。我在StackOverflow上看到了不同的問題,如THIS,它給出了用空字符串代替
標籤的代碼。這是我如何修改我的代碼:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
    currentString = [[NSMutableString alloc] init]; 
    currentString = [[currentString stringByReplacingOccurrencesOfString:@"<br>" withString:@""] mutableCopy]; 
    [self setTitle:currentString]; 
} 

但是,這並不工作,並顯示在輸出相同的文本而不刪除
標籤。任何人都可以指出我做錯了什麼,我該如何糾正它?

+2

什麼是currentString這裏?您正在初始化一個字符串,然後在其中替換
。 –

+0

@Suresh currentString是的NSMutableString – AJ112

+1

@ AJ112我們猜測。在給它分配一個指向'NSMutableString'的指針後,它不會是其他任何東西。我認爲蘇雷什正在要求一些背景,例如:1.它是一個實例變量還是什麼? 2.它用於什麼(或者它應該做什麼)? 3.你期望輸出是什麼,什麼是(錯誤)輸出,以及4.這個變量是如何相關的? – 2013-11-01 06:57:40

回答

0

我想你應該嘗試的這些功能之一,這可能會對你有所幫助

#pragma mark - 
#pragma mark - Remove HTML Tags 
- (NSString *)stringByStrippingHTML:(NSString *)inputString 
{ 
    NSMutableString *outString = [[[NSMutableString alloc] initWithString:inputString] autorelease]; 

    if ([inputString length] > 0) 
    { 
     NSRange r; 

     while ((r = [outString rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound) 
     { 
      [outString deleteCharactersInRange:r]; 
     } 
    } 

    return outString; 
} 

- (NSString *)stripTags:(NSString *)str 
{ 
    NSMutableString *html = [NSMutableString stringWithCapacity:[str length]]; 

    NSScanner *scanner = [NSScanner scannerWithString:str]; 
    scanner.charactersToBeSkipped = NULL; 
    NSString *tempText = nil; 

    while (![scanner isAtEnd]) 
    { 
     [scanner scanUpToString:@"<" intoString:&tempText]; 

     if (tempText != nil) 
      [html appendString:tempText]; 

     [scanner scanUpToString:@">" intoString:NULL]; 

     if (![scanner isAtEnd]) 
      [scanner setScanLocation:[scanner scanLocation] + 1]; 

     tempText = nil; 
    } 

    return html; 
} 
+0

是的,我已經嘗試過這種方法,但它們與我使用的stringByReplacingOccurrencesOfString沒有任何區別。無論我使用stringByReplacingOccurrencesOfString還是使用您描述的方法,我都會得到相同的輸出 – AJ112