Сравнение строк в Objective-C - PullRequest
0 голосов
/ 15 марта 2012

Я пишу небольшое приложение для iphone и пытаюсь написать функцию, которая вставит NSMutableString в NSArray в алфавитном порядке. Также я буду писать сортировку для сортировки всего массива. В обоих случаях мне интересно, каков лучший способ сравнения NSMutableStrings. Есть ли конкретная функция, которую я могу использовать?

Спасибо за вашу помощь.

Ответы [ 6 ]

4 голосов
/ 15 марта 2012

Я думаю, что вы ищете

(NSComparisonResult)[aString compare: bString];

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/nsstring_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/compare:

Вы можете использовать этот или один из связанных методов, если вы делаете сортировку вставкой. Однако если вы хотите выполнить одноразовую сортировку NSMutableArray, вы можете использовать один из методов сортировки NSMutableArray, например sortUsingComparator:.

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html#//apple_ref/occ/instm/NSMutableArray/sortUsingComparator:

2 голосов
/ 15 марта 2012

Для сортировки массива

NSArray *sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
2 голосов
/ 15 марта 2012

Я думаю, это должно сработать для вас. Это мой ответ, который я взял по ссылке:

Сравнение текста в UITextView?

РЕШЕНИЕ-1: Я немного изменил его, чтобы вам было проще:

Предположим, что String1 - это одна строка NSString.

 //Though this is a case sensitive comparison of string
 BOOL boolVal = [String1 isEqualToString:@"My Default Text"];

 //Here is how you can do case insensitive comparison of string:
 NSComparisonResult boolVal = [String1 compare:@"My Default Text" options:NSCaseInsensitiveSearch]; 

 if(boolVal == NSOrderedSame)
 {
     NSLog(@"Strings are same");
 }
 else
 {
     NSLog(@"Strings are Different");
 }

Здесь, если boolVal - NSOrderedSame, вы можете сказать, что строки одинаковы, иначе они разные.

РЕШЕНИЕ-2: Также вы не находите это легким, вы можете обратиться к ответу Macmade по той же ссылке.

Надеюсь, это поможет вам.

2 голосов
/ 15 марта 2012

Если вы посмотрите под «Идентификация и сравнение строк» ​​в справочнике NSString , вы найдете несколько вариантов. Они делают немного разные вещи, так как вы можете сравнить строки по-разному (например, сравниваются ли числа в лексическом или числовом порядке?). Самым базовым является compare: - вы, вероятно, можете начать там и выбрать более сложную версию по мере необходимости.

1 голос
/ 15 марта 2012

Попробуйте NSArray * sortedArrayUsingSelector: метод:

NSArray * stringArray = [NSArray arrayWithObjects:@"dddsss", @"aada", @"bbb", nil];
[stringArray sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@", [stringArray sortedArrayUsingSelector:@selector(compare:)]);

Выход:

(
  aada,
  bbb,
  dddsss
)

Более того, вы можете использовать NSSortDescriptor для выбора ASC или DESC.

1 голос
/ 15 марта 2012

попробуй BOOL ans = [str1 isEqualToString:str2];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...