Как преобразовать NSString в NSNumber, не используя numberfromstring

Я хочу преобразовать NSString в NSNumber, не используя numbreFromString: метод? numbreFromString: сетевой бог действует странно в 4,0. Таким образом, я хочу использовать альтернативу для преобразования NSString в NSNumber.Пожалуйста, помогите мне....

+ (NSString *)formatText:(NSString *) text withLocalSettings:(BOOL) isLacale {  

    NSNumber *aNsNumber= [numberFormatter numberFromString: text];  
    NSString *returnString = [NSString stringWithString:[numberFormatter stringForObjectValue:aNsNumber]];

    if(isLacale) {
        return returnString;
    }
    else {
        return [NSString stringWithFormat:@"%lf",[aNsNumber doubleValue]];
    }
} 

0

Я разрабатываю приложение, я должен запустить свое приложение и в 3,0 и 4.0. У меня есть текстовое поле, где, когда я пытаюсь ввести номера в текстовом поле, поведение похоже на это... В 3,0:-Это позволяет вводить 7 цифр и 2 дробных значения (я отформатировал его как это). Я отформатировал и локализовал числа наряду с разделениями запятой в зависимости от выбранной страны. Это работает отлично в 3,0 и 3.1.2

В 4,0: - это позволяет Вам вводить только 4 номера и после ввода 5-й цифры, это делает текстовые поля пустыми.. Ничто не отображено, когда u вводят 5-й номер и когда u вводят 6-й номер, он начинает с 1-го числа и продолжает тот же сезам 4 числа. исключая: - когда u вводят 1234, текстовое поле появляется - 1234 и когда u входят 12345, текстовое поле появляется "". и когда u входят 6 теперь, это запускается с 6 и так далее..

Я использую NSNumberFormatter и numberfromstring метод для форматирования значений, вводимых в текстовое поле.

Я не могу понять, почему это происходит как это... Пожалуйста, помогите мне...

5
задан Pradeep Reddy Kypa 29 May 2012 в 12:12
поделиться

2 ответа

[NSNumber numberWithInteger:[theString integerValue]];
[NSNumber numberWithDouble:[theString doubleValue]];

также floatValue, intValue, longLongValue, boolValue

Править :

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

theString = [theString stringByReplacingOccurrencesOfString:@"," withString:@""];

Чтобы вырезать более одного символа, вы можете получить что-то, работающее с componentsSeparatedByCharactersInSet.

theSet = [NSCharacterSet characterSetWith...];
theString = [[theString componentsSeparatedByCharactersInSet:theSet] componentsJoinedByString:@""];
16
ответ дан 18 December 2019 в 10:42
поделиться

iOS4 очень придирчива к форматированию чисел.

В вашем примере кода вы передаете локаль - убедитесь, что десятичный разделитель в вашей строке соответствует тому, что определено в локали. Убедитесь, что вы вводите числа, которые правильно отформатированы (iOS4) id est nine thousand должно быть 9.000, а не 9000, если вы используете DecimalStyle.

Если вы настаиваете на использовании альтернативного парсера - sscanf an atoi может быть вариантом.

Используйте стандартный sscanf из c lib's с форматером или atoi в зависимости от того, какие числа вам нужно преобразовать.

#include<stdio.h>

int main(int argc, char **argv) {

   char s[] = "1.2";
   double x;

   sscanf(s, "%lf", &x);
   printf("The decimal number was %g\n\n", x);

   return 1;
}

atoi принимает строку, содержащую целое число, и возвращает значение в виде int.

0
ответ дан 18 December 2019 в 10:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: