Может кто-нибудь указать мне какие-либо ресурсы о сравнении без учета регистра в Objective C? Кажется, он не имеет эквивалентного методаstr1.equalsIgnoreCase(str2)
ios
objective-c
cocoa-touch
nsstring
Теджасви Йерукалапуди
источник
источник
@"Some String"
принимается от любого другого вызова и случаетсяnil
, вашif
будет давать ,true
как отправкаcaseInsensitiveCompare
вnil
корректен и приводит к другой ,nil
который, в нашем случае, по сравнению сNSOrderedSame
возвратитtrue
(NSOrderedSame
определяется как 0). Это может быть источником довольно разрушительных ошибок, как это было в моем случае. Ура!NSString
которая возвращает логическое значение. Затем, если получена строкаnil
, метод в целом возвращаетсяNO
.Примечание:
stringA &&
требуется, потому что когдаstringA
этоnil
:и так бывает
NSOrderedSame
также определяется как0
.Следующий пример - типичная ловушка:
источник
Альтернатива, если вы хотите больше контроля, чем просто нечувствительность к регистру:
Числовой поиск и диакритическая нечувствительность - два удобных варианта.
источник
if ([someString compare:otherString options:NSCaseInsensitiveSearch] && someString.length > 0 && someString != (id)[NSNull null])
Вы всегда можете убедиться, что они в одном и том же случае перед сравнением:
Главное преимущество в том, что вы избегаете потенциальной проблемы, описанной matm, в отношении сравнения нулевых строк. Вы можете либо проверить, что строка не равна нулю, прежде чем выполнять один из
compare:options:
методов, или вы можете быть ленивым (как я) и игнорировать добавочную стоимость создания новой строки для каждого сравнения (которая минимальна, если вы делаете только один). или два сравнения).источник
caseInsensitiveCompare
), поддерживаемое языком , всегда используйте это.источник
Новый способ сделать это. iOS 8
источник
true
«Café» и «É», это определенно НЕ правильный ответ.Попробуйте этот метод
источник
Преобразование ответа Джейсона Коко в Свифта для глубоко ленивых :)
источник
проверить с префиксом как в iPhone ContactApp
этот блог был полезен для меня
источник
Альтернативное решение для Swift:
Чтобы сделать оба UpperCase:
например:
или сделать оба LowerCase:
например:
источник
На MacOS вы можете просто использовать
-[NSString isCaseInsensitiveLike:]
, который возвращает такBOOL
же, как-isEqual:
.источник
источник