Подтвердить что ты не робот

Если строка в алфавитном порядке больше, чем другая строка в объективе

Я пытаюсь использовать оператор if, чтобы определить, какая из двух строк начинается в алфавитном порядке. Как с номерами и больше и меньше:

if (1 < 2) {

просто со строками:

if(@"ahello" < @"bhello") {

Или мне нужно иметь строку, содержащую все буквы, а затем проверить индекс первого char в каждой строке и посмотреть, какой индекс больше, а индекс, который меньше, чем другой, сначала начинается в алфавите а затем, если они равны, перейдите к следующему char и повторите?

4b9b3361

Ответ 1

Что вы можете сделать:

NSString *stringOne = @"abcdef";
NSString *stringTwo = @"defabc";

NSComparisonResult result = [stringOne compare:stringTwo];

if (result == NSOrderedAscending) // stringOne < stringTwo
    ...

if (result == NSOrderedDescending) // stringOne > stringTwo
    ...

if (result == NSOrderedSame) // stringOne == stringTwo
    ...

Существуют также другие методы для выполнения различных видов сравнений (таких как нечувствительность к регистру, диакритическая нечувствительность и т.д.), но результат сравнения можно по-прежнему обрабатывать, как указано выше. В качестве альтернативы, некоторым людям легче сравнить result с 0. Оператор, используемый для сравнения result с 0, будет тем же самым оператором, который используется в других языках, где сравнение строк может быть выполнено напрямую:

if (result < 0) // stringOne < stringTwo
    ...

if (result > 0) // stringOne > stringTwo
    ...

if (result == 0) // stringOne == stringTwo
    ...

Большинство (если не все) методов compare:... NSString являются обертками для compare:options:range:locale:. Различные варианты опций, которые вы можете пройти, можно найти здесь.

Ответ 2

NSString имеет целый набор методов compare:, чтобы делать то, что вы хотите. Некоторые из них очень просты, а у других есть множество вариантов, которые вы можете использовать для настройки поведения. Проверьте documentation.