比较一个字符串,它似乎不应该工作

时间:2011-01-13 02:58:12

标签: iphone objective-c string

当我NSLog我的字符串的内容时,它输出:

m3u8

正如所料。因为这就是我解析成字符串的内容。

稍后当我做一些比较检查时,字符串等于m3u8,它们会失败。

NSRange match;
match = [aRadio.streamType rangeOfString: @"m3u8"];
if (match.location == NSNotFound) 
{
    NSLog(@" m3u8 Not MATCHED: %@",aRadio.streamType);
    //break;
}

if ([aRadio.streamType compare:@"m3u8" ] == NSOrderedSame)
{

    NSLog(@" m3u8 DETECTED: %@",aRadio.streamType);
}
else 
{
    NSLog(@"NO m3u8 DETECTED %@",aRadio.streamType);
    [self createStreamer];
    [streamer start];
}

NSLogs显示第一次检查存在匹配,第二次检查未检测到。

我希望他们都看到该字符串包含m3u8,这是由NSLogs中的Radio.streamType输出确认的。

这就是我声明的stramType

@property (nonatomic, retain) NSString *streamType;

任何人都能解释这种奇怪的行为来自哪里?

由于 -code

修改

NSLog(@"Str len: %d",[aRadio.streamType length]); 

输出5作为长度。

我尝试修剪新行的字符串

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 

if(!currentElementValue) 
{
    currentElementValue = [[NSMutableString alloc] initWithString:string];
}
else
{   
    [currentElementValue appendString:string];
    [currentElementValue stringByTrimmingCharactersInSet:[NSCharacterSet 
newlineCharacterSet]];
    [currentElementValue stringByTrimmingCharactersInSet:[NSCharacterSet 
whitespaceAndNewlineCharacterSet]];
    [currentElementValue stringByTrimmingCharactersInSet:[NSCharacterSet 
controlCharacterSet]];
    [currentElementValue stringByTrimmingCharactersInSet:[NSCharacterSet 
nonBaseCharacterSet]];
    NSLog(@"Processing Value: %@", currentElementValue);
}   
}

但是NSLog(@“Processing Value:%@”,currentElementValue);仍然下降到换行符以显示currentElementValue中包含的内容'm3u8'

由于 -code

2 个答案:

答案 0 :(得分:1)

您可能希望使用isEqualToString:之类的内容进行文字比较。当然有更高级的选项可以为locale,diacratics,case insensitive等引入参数 - 这取决于你需要什么。

答案 1 :(得分:0)

尝试按

比较字符串
if ([aRadio.streamType caseInsensitiveCompare:@"m3u8"] == NSOrderedSame)