Как добавить строку чисел в Objective-C - PullRequest
0 голосов
/ 04 декабря 2011

Я пытаюсь добавить все числа в строку в Objective-C, и я не мог понять это.

Например:

NSString *number = @"234454875657";

Как вы набираете по одному номеру за раз, а затем складываете их?

Я знаю, что вы должны использовать цикл, и я пытался использовать индекс метода characterAtIndex: (NSUInteger) index, но он возвращает unichar. Кроме того, если строка короткая, вы можете получить intValue и использовать% 10, а затем разделить 10, чтобы сложить все цифры, но что делать, если это длинная строка и ее может содержать только Double. % не будет работать с двойными значениями.

Ответы [ 3 ]

1 голос
/ 04 декабря 2011

Одним из способов будет использование метода -substringWithRange: NSString для извлечения подстрок длиной 1 из исходной строки.Затем вы можете использовать NSString -intValue, чтобы получить значение каждой подстроки.

Другой способ, если строка не слишком длинная, состоит в том, чтобы сначала преобразовать строку в целое число, а затем сложитьцифры.Это было бы что-то вроде этого:

int sum = 0;
for (long long number = [@"234454875657" longLongValue]; number > 0; number /= 10) {
    sum += number % 10;
}
0 голосов
/ 04 декабря 2011
for(int i=0 < i < [str length]; i++) {
    NSString *char = [str characterFromIndex:[str length]-1];
}
0 голосов
/ 04 декабря 2011

Используйте цикл и characterAtIndex:. Но то, что вы получаете, это символ Unicode, а не «число». Вам нужно как-то преобразовать персонажа в число. Есть дюжина способов сделать это, но самый простой, если вы знаете, что все символы являются допустимыми десятичными цифрами, это вычесть '0' из значения символа. Что-то вроде:

    int digit = (int)([number characterAtIndex:i] - (unichar)'0');

(При этом используется знание того, что в ASCII / Unicode десятичные цифры являются последовательными в порядке возрастания. Безопасное предположение, если вы не используете этрусский набор символов или некоторые другие.)

(Но если вы делаете это, скажем, для вычисления контрольного кода для номера кредитной карты, вы должны быть осторожны и каким-то образом проверять характер.)

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