NSArray считает только цифры - PullRequest
0 голосов
/ 10 мая 2011

У меня есть массив с внутренними строками, состоящими только из цифр и букв, т.е.:

"10.1",
"15.7",
"9.3",
"RED",
"7.7",
"BLUE",
"9.0"

[значение массива] возвращает номера всех строк в массиве (в этом примере 7).

Как узнать количество строк, содержащих только цифры?

Спасибо,

Макс

Ответы [ 2 ]

1 голос
/ 10 мая 2011

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

В основном вам нужно перебрать содержимое массива и посмотреть, соответствуют ли они тому, что вы ищете:

NSUInteger count = 0;
for (id object in array) {
    if ([object .... ])
        count++;
}

Вы можете взглянуть на новый блочный API:

- (NSIndexSet *)indexesOfObjectsPassingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate

и просто посмотрите на счетчик возвращаемого значения. Однако с большими массивами я бы предпочел итерировать сам, если вам не нужен индекс, установленный отдельно от счетчика.

1 голос
/ 10 мая 2011

Используя блоки, это создает набор индексов массива для всех строк в массиве, содержащих десятичную цифру.

[[items indexesOfObjectsPassingTest: ^(id obj, NSUInteger idx, BOOL *stop) {
     return (BOOL) [obj rangeOfCharacterFromSet: [NSCharacterSet decimalDigitCharacterSet]].length; 
 }] count]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...