Как сделать преобразование строк в Objective-C?

Вот самый надежный способ извлечь фрагмент из синтаксически допустимого URL / URI.

 URI uri = new URI(someString);
 String fragment = uri.getFragment();

Как вы вставляете это в bean-компонент, будет зависеть от того, какую серверную структуру вы используете, и независимо от того, выполняете ли вы инъекцию, используя XML или аннотации, или делаете это программно.

144
задан Peter Mortensen 5 August 2010 в 23:31
поделиться

6 ответов

Можно преобразовать NSString в двойное с

double myDouble = [myString doubleValue];

, Округление к самому близкому интервалу может тогда быть сделано как

int myInt = (int)(myDouble + (myDouble>0 ? 0.5 : -0.5))

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

NSString* myNewString = [NSString stringWithFormat:@"%d", myInt];
228
ответ дан jjnguy 5 August 2010 в 23:31
поделиться

Для реального преобразования от строки до числа правильно необходимо использовать экземпляр NSNumberFormatter настроенный для локали, из которой Вы читаете строку.

Различные локали отформатируют числа по-другому. Например, в некоторых частях мира, COMMA используется в качестве десятичного разделителя, в то время как в других это PERIOD, — В и тысячи разделителя (когда используется) инвертируется. Кроме тех случаев, когда это - пространство. Или не существующий вообще.

Это действительно зависит от происхождения входа. Самая безопасная вещь сделать, настраивают NSNumberFormatter для способа, которым отформатирован Ваш вход, и используйте -[NSFormatter numberFromString:] для получения NSNumber от него. Если Вы хотите обработать ошибки преобразования, можно использовать -[NSFormatter getObjectValue:forString:range:error:] вместо этого.

70
ответ дан zety 5 August 2010 в 23:31
поделиться

Добавляя к ответу olliej, можно преобразовать из интервала назад к строке с NSNumber stringValue:

[[NSNumber numberWithInt:myInt] stringValue]

stringValue на NSNumber вызывает descriptionWithLocale:nil, давая Вам представление локализованной строки значения. Я не уверен, даст ли [NSString stringWithFormat:@"%d",myInt] Вам правильно локализованный reprsentation myInt.

32
ответ дан Barry Wark 5 August 2010 в 23:31
поделиться

olliej's округление метод является неправильным при отрицательных числах

  • , 2,4 округленных равняются 2 (метод olliej разбирается в этом)
  • , в€ ’2,4 округленных является в€ ’2 (метод olliej возвращается-1)

, Вот альтернатива

  int myInt = (int)(myDouble + (myDouble>0 ? 0.5 : -0.5))

, Вы могли, конечно, использовать округляющуюся функцию от math.h

7
ответ дан Paul Dixon 5 August 2010 в 23:31
поделиться

Для округления необходимо, вероятно, использовать функции, определяемые C в math.h.

int roundedX = round(x);

Удерживают Опцию и дважды щелкают по round in Xcode, и это покажет Вам страницу справочника с различными функциями для округления различных типов.

2
ответ дан benzado 5 August 2010 в 23:31
поделиться

Это самый простой из известных мне способов:

float myFloat = 5.3;
NSInteger myInt = (NSInteger)myFloat;
1
ответ дан 23 November 2019 в 22:46
поделиться