В чем разница между NSString
's localizedCaseInsensitiveCompare:
и localizedStandardCompare:
методами?Сравнение строк для локализации
Я прочитал ссылку, но не получил правильного представления о том, какой из них использовать.
В чем разница между NSString
's localizedCaseInsensitiveCompare:
и localizedStandardCompare:
методами?Сравнение строк для локализации
Я прочитал ссылку, но не получил правильного представления о том, какой из них использовать.
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:
.
Прохладной. Таким образом, localizedStandardCompare может понять что-то в строке больше, чем caseInsensitiveCompare. Спасибо за примеры. – sridevi
Последние виды, такие как Finder на OS X.
localizedCaseInsensitiveCompare:
похож на localizedCompare:
Они оба возвращают NSComparisonResult
значения, указывающее, лексический порядок приемника и другую заданной строку с использованием локализованного сравнения.
Разница заключается в том, что первая составляет case insensitive
. то есть он игнорирует различное использование прописных и строчных букв при сравнении строк.
localizedStandardCompare
Это сравнение строк, отсортированных по поисковому приложению.
Проверьте это: http://stackoverflow.com/questions/7293996/sorting-coredata-entity-with-a-nscomparisonresult Его вид похож .. – Mrunal