Как я могу преобразовать , NSString
содержащий ряд любого примитивного типа данных (например int
, float
, char
, unsigned int
и т.д.)? Проблема в том, что я не знаю, какой тип числа будет содержать строка во время выполнения.
У меня есть идея, как это сделать, но я не уверен, что это работает с любым типом, а также со значениями без знака и с плавающей точкой:
long long scannedNumber;
NSScanner *scanner = [NSScanner scannerWithString:aString];
[scanner scanLongLong:&scannedNumber];
NSNumber *number = [NSNumber numberWithLongLong: scannedNumber];
Спасибо за помощь.
+currentLocale
, но вы правы; всегда нужно учитывать локаль при работе с конвертируемой информацией в удобочитаемую форму.Вы можете использовать
-[NSString integerValue]
,-[NSString floatValue]
и т.д. Тем не менее, правильный ( с учетом локал и т.д.) способ сделать это состоит в использовании ,-[NSNumberFormatter numberFromString:]
который даст вам NSNumber преобразованных из соответствующей местности и с учетом настроекNSNumberFormatter
( в том числе , будет ли это позволить плавающему баллы).источник
@"2000"
вint
и[@"2000" integerValue]
работал хорошо, и немного проще для моего случая.[NSNumber numberWithInteger ...]
Objective-C
(Примечание: этот метод не подходит для разных локалей, но немного быстрее, чем a
NSNumberFormatter
)стриж
Простой, но грязный способ
Способ расширения Это лучше, на самом деле, потому что он будет хорошо работать с локалями и десятичными числами.
Теперь вы можете просто сделать:
источник
,
и.
наоборот (например42.000,42
. Что-то,floatValue
вероятно, не учитывается?@([@"42" intValue])
работал отлично. Не беспокоиться о Locale.Для строк , начинающихся с целыми числами, например,
@"123"
,@"456 ft"
,@"7.89"
и т.д., использование-[NSString integerValue]
.Итак,
@([@"12.8 lbs" integerValue])
это как делать[NSNumber numberWithInteger:12]
.источник
Вы также можете сделать это:
Радоваться, веселиться!
источник
Если вы знаете, что получаете целые числа, вы можете использовать:
источник
Вот рабочий пример NSNumberFormatter, читающий локализованный номер NSString (xCode 3.2.4, osX 10.6), чтобы сэкономить другим часы, которые я только что потратил. Осторожно: хотя он может обрабатывать конечные пробелы (работает "8,765.4"), он не может обрабатывать начальные пробелы и не может обрабатывать произвольные текстовые символы. (Неверные строки ввода: «8» и «8q» и «8 q».)
источник
Я хотел преобразовать строку в двойную. Этот ответ выше не работал для меня. Но это сделало: Как сделать преобразование строк в Objective-C?
Все, что я в значительной степени сделал, было:
источник
Спасибо всем! Я объединил обратную связь и, наконец, мне удалось преобразовать текстовый ввод (строку) в Integer. Кроме того, он может сказать мне, является ли ввод целым числом :)
источник
Я думаю, что NSDecimalNumber сделает это:
Пример:
NSDecimalNumber является подклассом NSNumber, поэтому неявное приведение разрешено.
источник
Как насчет стандарта С
atoi
?Как вы думаете, есть какие-то предостережения?
источник
Вы можете просто использовать
[string intValue]
или[string floatValue]
или[string doubleValue]
т. Д.Вы также можете использовать
NSNumberFormatter
класс:источник
Вы также можете сделать, как этот код 8.3.3 IOS 10.3 Поддержка
источник
источник
Работал в Свифте 3
источник
Я знаю, что это очень поздно, но приведенный ниже код работает для меня.
Попробуйте этот код
NSNumber *number = @([dictionary[@"keyValue"] intValue]]);
Это может помочь вам. Спасибо
источник
Попробуй это
Примечание - я использовал longLongValue согласно моему требованию. Вы также можете использовать integerValue, longValue или любой другой формат в зависимости от ваших требований.
источник
источник