的iOS的NSMutableString删除
标签

问题描述:

我有一个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

我想你应该尝试的这些功能之一,这可能会对你有所帮助

#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