2013-03-15 2 views
3

В чем разница между NSString's localizedCaseInsensitiveCompare: и localizedStandardCompare: методами?Сравнение строк для локализации

Я прочитал ссылку, но не получил правильного представления о том, какой из них использовать.

+0

Проверьте это: http://stackoverflow.com/questions/7293996/sorting-coredata-entity-with-a-nscomparisonresult Его вид похож .. – Mrunal

ответ

8

localizedCaseInsensitiveCompare: эквивалентно:

[aString compare:otherString 
     options:NSCaseInsensitiveSearch 
     range:NSMakeRange(0,aString.length) 
     locale:[NSLocale currentLocale]]; 

localizedStandardCompare: в основном эквивалентна:

[aString compare:otherString 
     options:NSCaseInsensitiveSearch | NSNumericSearch 
     range:NSMakeRange(0,aString.length) 
     locale:[NSLocale currentLocale]]; 

Таким образом, основное различие в том, как числа в строках сравниваются.

Сравнивая следующие 3 строки с использованием localizedCaseInsensitiveCompare: приведет в следующем порядке:

"Foo2.txt", 
"Foo25.txt", 
"Foo7.txt" 

С другой стороны, сравнивая их с помощью localizedStandardCompare: приведет в следующем порядке:

"Foo2.txt", 
"Foo7.txt", 
"Foo25.txt" 

В то время как localizedCaseInsensitiveCompare: метод был навсегда, localizedStandardCompare: был добавлен недавно (OS X 10.6). Finder сортирует имена файлов с помощью числового метода, и до добавления localizedStandardCompare: разработчикам не было простого способа гарантировать, что они могут сортировать строки, подобные Finder.

При определении того, какой из них использовать, если строки, которые вы сравниваете, представляют имена файлов, тогда вы должны определенно стремиться к использованию localizedStandardCompare:.

+0

Прохладной. Таким образом, localizedStandardCompare может понять что-то в строке больше, чем caseInsensitiveCompare. Спасибо за примеры. – sridevi

0

localizedCaseInsensitiveCompare: похож на localizedCompare:

Они оба возвращают NSComparisonResult значения, указывающее, лексический порядок приемника и другую заданной строку с использованием локализованного сравнения.

Разница заключается в том, что первая составляет case insensitive. то есть он игнорирует различное использование прописных и строчных букв при сравнении строк.

localizedStandardCompare Это сравнение строк, отсортированных по поисковому приложению.

Смежные вопросы