Фильтруйте NSArray строк, когда часть строки пуста, используя NSPredicate - PullRequest
0 голосов
/ 07 апреля 2020

Я бы хотел отфильтровать элементы массива строк, в которых правая часть строки пуста, с помощью NSPredicate, но мои знания по NSPredicate ограничены.

Строки должны выглядеть как {"0,General", "1,Sports", "2,Entertainment"} et c.

Я хочу отфильтровать случаи, когда у вас есть что-то вроде: "0," или даже ","

Так что если бы у меня было {"0,General", "1,Sports", "0,","2,Entertainment"}, я бы хотел отфильтровать ошибочная категория "0".

Я знаю, что могу отфильтровать полностью пустые строки с помощью чего-то вроде следующего:

NSArray *filteredcats = [mycats filteredArrayUsingPredicate:
                         [NSPredicate predicateWithFormat:@"length > 0"]];

Как отфильтровать строки в массиве, где что-либо для справа от запятой в строке пусто?

1 Ответ

0 голосов
/ 07 апреля 2020

Вы можете легко использовать регулярные выражения для этого,

NSArray *myArray = @[@",First",@"0,General",@"1,Sports",@"2,Entertainment",@"3,",@","];
NSString *regex = @"^\\d,\\w+$";
NSPredicate *filter = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
NSArray *matches = [myArray filteredArrayUsingPredicate:filter];

NSLog(@"matches: %@", matches);
matches: (
    "0,General",
    "1,Sports",
    "2,Entertainment"
)
...