Сравнение строки не работает, когда кажется, что это должно - PullRequest
1 голос
/ 13 января 2011

Когда я 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, что подтверждается тем, что выводит Radio.streamType в NSLogs.

Вот как я объявил stramType

@property (nonatomic, retain) NSString *streamType;

Кто-нибудь может объяснить, откуда происходит это странное поведение?

Спасибо -Кода

EDIT

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 (@ "Значение обработки:% @", currentElementValue); все еще падает на новую строку, чтобы отобразить то, что содержится в currentElementValue, который является 'm3u8'

Спасибо -Кода

Ответы [ 2 ]

1 голос
/ 13 января 2011

вы можете попробовать буквальное сравнение, используя что-то вроде isEqualToString:.Есть, конечно, более продвинутые опции, которые вводят параметры для локали, диакратики, без учета регистра и т. Д. - это зависит от того, что вам нужно.

0 голосов
/ 13 января 2011

попробуйте сравнить строки по

if ([aRadio.streamType caseInsensitiveCompare:@"m3u8"] == NSOrderedSame)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...