Как разбить целое число? - PullRequest
       3

Как разбить целое число?

1 голос
/ 21 сентября 2011

Допустим, у меня есть целое число, такое как 2734465, и оно называется intOne. Как мне «разбить» это целое число, чтобы я мог поставить число в 7 UILabels? Итак, на первом ярлыке у меня будет 2, затем на втором ярлыке у меня будет 7 и так далее. Как бы я это сделал? Спасибо за вашу помощь!

Ответы [ 5 ]

4 голосов
/ 21 сентября 2011

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

NSString *intString = [NSString stringWithFormat:@"%d", myInt];

Затем вы можете получить отдельные символы:

myChar = [intString characterAtIndex: i];
2 голосов
/ 21 сентября 2011

Вот другой подход. Это создает массив, элементами которого являются отдельные цифры (и предшествующий «-», если отрицательный):

#import <Foundation/Foundation.h>

NSArray* brokenArrayWithInt(NSInteger intOne) {
    NSMutableArray *result = [[[NSMutableArray alloc] init] autorelease];
    BOOL isNegative = NO;
    if (intOne < 0) {
        isNegative = YES;
        intOne = -intOne;
    }
    do {
        [result insertObject:[NSNumber numberWithInteger:intOne % 10] atIndex:0];
        intOne /= 10;
    } while (intOne > 0);

    if (isNegative) {
        [result insertObject:@"-" atIndex:0];
    }
    return result;
}

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    NSArray *brokenArray = brokenArrayWithInt(2734465);
    NSLog(@"Array: %@", brokenArray);
    brokenArray = brokenArrayWithInt(-2734465);
    NSLog(@"Array: %@", brokenArray);
    brokenArray = brokenArrayWithInt(0);
    NSLog(@"Array: %@", brokenArray);
    [pool drain];
    return 0;
}

Вот результат:

Running…
2011-09-21 12:28:52.531 so7505138[6739:a0f] Array: (
    2,
    7,
    3,
    4,
    4,
    6,
    5
)
2011-09-21 12:28:52.533 so7505138[6739:a0f] Array: (
    "-",
    2,
    7,
    3,
    4,
    4,
    6,
    5
)
2011-09-21 12:28:52.533 so7505138[6739:a0f] Array: (
    0
)
2 голосов
/ 21 сентября 2011

После того, как у вас есть строка, вы также можете использовать:

 NSString *keyStr = [intString substringWithRange:NSMakeRange (i, j)];

, чтобы получить подстроку напрямую

В качестве альтернативы манипуляции со строкой вы можете математически разбить число n на части:

 int n = 1357246;
    int digit;
    int divisor;
    for (int i = log10(n); i> 0; i--) {
        divisor = pow(10,i);

        digit = n / divisor;
        n = n - digit*divisor;
        NSLog(@"%i ",digit);
    }
      NSLog(@"%i ",n);
0 голосов
/ 21 сентября 2011

Зависит от того, хотите ли вы, чтобы число подбирало соответствующее форматирование для конкретной локали, например, для тысяч разделителей и десятичной точки.Если вы это сделаете, то превратите его в строку и затем извлеките символы, как предлагали другие.

Если вы хотите получить значение каждой десятичной цифры, то вы делите по модулю 10, 100, 1000 и т. Д., Начиная ссила 10, которая меньше общей величины (например, для 213, начните с 100, затем 10, затем 1)

0 голосов
/ 21 сентября 2011

Приведите целое число в строку - затем используйте метод для разделения / подстроки строки в 7 строк. Или количество, которое вам требуется. Поместите строку в каждую метку.

Начните с [NSString stringWithFormat:@"%d", myNum];

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