当我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
答案 0 :(得分:1)
您可能希望使用isEqualToString:
之类的内容进行文字比较。当然有更高级的选项可以为locale,diacratics,case insensitive等引入参数 - 这取决于你需要什么。
答案 1 :(得分:0)
尝试按
比较字符串if ([aRadio.streamType caseInsensitiveCompare:@"m3u8"] == NSOrderedSame)