Как сопоставить часть строки со значениями NSArray в target-c - PullRequest
2 голосов
/ 22 июля 2011

У меня следующий массив и строка поиска.

NSArray *values =[NSArray arrayWithObjects:@"abc",@"xyz",@"cba",@"yzx",nil];

NSString *search = @"startcba";

Я хочу найти конец строки в элементах массива.Мой ожидаемый результат поиска будет @ "cba".Пожалуйста, дайте мне знать, как найти значение желаемого в массиве для поиска.

Спасибо,

Ответы [ 2 ]

4 голосов
/ 22 июля 2011

Вы можете использовать NSPredicate, чтобы получить элементы, которые удовлетворяют вашим требованиям.

NSPredicate * predicate = [NSPredicate predicateWithFormat:@" %@ ENDSWITH SELF ", search];
NSArray * searchResults = [values filteredArrayUsingPredicate:predicate];
1 голос
/ 22 июля 2011

Отличный способ NSPredicates.

Вот подход с rangeOfString:

NSArray *values =[NSArray arrayWithObjects:@"abc",@"xyz",@"cba",@"yzx",nil];

NSString *search = @"startcba";
NSUInteger searchLength = [search length];
NSString *result = nil;

for (NSString *val in values)
{
    NSUInteger valLength = [val length];
    NSRange expectedRange = NSMakeRange(searchLength - valLength, valLength);
    NSRange rng = [search rangeOfString:val];

    if ( rng.location == expectedRange.location && rng.length == expectedRange.length )
    {
        result = val;
        break;
    }
}
...