#ios #objective-c #string-comparison
#iOS #цель-c #сравнение строк #objective-c
Вопрос:
Мой код всегда возвращает «fail» для следующего сравнения строк с использованием isEqualToString
. Каков правильный способ сравнения строк, поступающих с консоли?
char buf[MAX_LENGTH];
fgets(buf, MAX_LENGTH, stdin);
NSString *s = [[NSString alloc] initWithUTF8String:buf];
NSLog(@"You typed %@", s);
NSString *n = @"exit";
if ([n isEqualToString:s]) {
NSLog(@"success!");
} else {
NSLog(@"fail");
}
Комментарии:
1. Какой журнал вы получили из этого NSLog (@»Вы ввели % @», s); ?
2. Отладчик, точка останова, проверка содержимого переменной, отладочный вывод… Все, что нужно знать, и намного быстрее, чем в Интернете. Пожалуйста, научитесь их использовать, и если вы уже это сделали, пожалуйста, добавьте то, что вы узнали из этого, в вопрос.
3. в журнале, который я получил, указано введенное значение, например, hello. на самом деле моя проблема в том, что когда я ввел строку для сравнения, даже если она правильная, она всегда переходит в NSLog (@»fail»);
Ответ №1:
Результат fgets содержит » n», поэтому вам нужно определить свой «n» следующим образом:
NSString *n = @"exitn";
Или удалите » n» из «s»:
NSString *s = [[NSString alloc] initWithUTF8String:buf];
s = [s stringByReplacingOccurrencesOfString:@"n" withString:@""];