Как преобразовать NSString в NSNumber без использования numberfromstring
Я хочу преобразовать NSString в NSNumber без использования метода numbreFromString:? NumbreFromString: metgod странно действует в 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 дробных значения (I отформатировали его так). Я отформатировал и локализовал номера вместе с разделителями запятых в зависимости от выбранной страны. Он отлично работает в 3.0 и 3.1.2
В 4.0: - он позволяет вводить только 4 числа, а после ввода 5-й цифры делает текстовые поля пустыми.. Ничего не отображается, когда вы вводите 5-е число, а когда вы вводите 6-е число, оно начинается с 1-го числа и продолжается до 4-х чисел. пример: - когда вы вводите 1234, появляется текстовое поле - 1234 и когда вы вводите 12345, появляется текстовое поле " ". и когда вы теперь входите в 6, это начинается с 6 и так далее..
Я использую метод NSNumberFormatter и numberfromstring для форматирования значений, введенных в текстовое поле.
Я не могу понять, почему это происходит именно так... Пожалуйста, помогите мне...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:@""];
IOS4 очень придирчив, когда дело доходит до форматирования чисел.
В вашем примере кода Вы передаете в языковом стандарте-убедитесь, что десятичный разделитель в строке соответствует тому, что определено в языковом стандарте. Убедитесь, что вы вводите числа, которые правильно отформатированы (iOS4) id est девять тысяч должно быть 9.000, а не 9000, если вы используете DecimalStyle.
Если вы настаиваете на использовании альтернативного синтаксического анализатора-sscanf, atoi может быть вариантом.
Используйте стандартные c lib sscanf с форматером или 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.