Я хочу преобразовать 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 метод для форматирования значений, вводимых в текстовое поле.
Я не могу понять, почему это происходит как это... Пожалуйста, помогите мне...
[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:@""];
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.