Извлечение цифр из целых и десятичных частей двойного - PullRequest
0 голосов
/ 20 февраля 2010

Я хотел бы знать, какой будет самый элегантный подход для извлечения цифр из двойного в ObjectiveC с использованием Cocoa Touch (это нужно запустить на iPhone):

Предположим, у вас есть дубль: 1,423

Как бы вы получили каждый "1", "4", "2", "3", которые составляют двойное число в нескольких переменных?

В конце я хотел бы получить что-то вроде:


NSLog(@"here are the digits : %d , %d %d %d ", one, two, three, four);

одна переменная должна быть 1

две переменные должны быть 4

три переменные должны быть 2

четыре переменные должны быть 3

Какой-нибудь совет для достижения этого хорошим способом, используя ObjectiveC / Cocoa Touch?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 21 февраля 2010

Вот кое-что, что я очень быстро взбил для вас.

@interface NSNumber (DigitParsing)

- (NSArray *)arrayOfStringDigits;

@end

@implementation NSNumber (DigitParsing)

- (NSArray *)arrayOfStringDigits {
    NSString *stringNumber = [self stringValue];
    NSMutableArray *digits = [NSMutableArray arrayWithCapacity:[stringNumber length]];
    const char *cstring = [stringNumber cStringUsingEncoding:NSASCIIStringEncoding];
    while (*cstring) {
        if (isdigit(*cstring)) {
            [digits addObject:[NSString stringWithFormat:@"%c", *cstring]];
        }
        cstring++;
    }
    return digits;
}

@end

Затем в вашем коде сделайте что-то вроде этого:

NSArray *myDigits = [[NSNumber numberWithDouble:1.423] arrayOfStringDigits];
NSLog(@"Array => %@", myDigits);
NSLog(@"here are the digits : %@ , %@ %@ %@ ", 
      [myDigits objectAtIndex:0], 
      [myDigits objectAtIndex:1], 
      [myDigits objectAtIndex:2], 
      [myDigits objectAtIndex:3]);
0 голосов
/ 20 февраля 2010

Я бы преобразовал его в строку (используя +[NSString stringWithFormat:]), а затем отсканировал числа, используя rangeOfCharactersInSet: или NSScanner.

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