Вот самый надежный способ извлечь фрагмент из синтаксически допустимого URL / URI.
URI uri = new URI(someString);
String fragment = uri.getFragment();
Как вы вставляете это в bean-компонент, будет зависеть от того, какую серверную структуру вы используете, и независимо от того, выполняете ли вы инъекцию, используя XML или аннотации, или делаете это программно.
Можно преобразовать NSString в двойное с
double myDouble = [myString doubleValue];
, Округление к самому близкому интервалу может тогда быть сделано как
int myInt = (int)(myDouble + (myDouble>0 ? 0.5 : -0.5))
, я честно не уверен, существует ли более оптимизированный способ преобразовать назад в строку, чем
NSString* myNewString = [NSString stringWithFormat:@"%d", myInt];
Для реального преобразования от строки до числа правильно необходимо использовать экземпляр NSNumberFormatter
настроенный для локали, из которой Вы читаете строку.
Различные локали отформатируют числа по-другому. Например, в некоторых частях мира, COMMA
используется в качестве десятичного разделителя, в то время как в других это PERIOD
, — В и тысячи разделителя (когда используется) инвертируется. Кроме тех случаев, когда это - пространство. Или не существующий вообще.
Это действительно зависит от происхождения входа. Самая безопасная вещь сделать, настраивают NSNumberFormatter
для способа, которым отформатирован Ваш вход, и используйте -[NSFormatter numberFromString:]
для получения NSNumber
от него. Если Вы хотите обработать ошибки преобразования, можно использовать -[NSFormatter getObjectValue:forString:range:error:]
вместо этого.
Добавляя к ответу olliej, можно преобразовать из интервала назад к строке с NSNumber
stringValue
:
[[NSNumber numberWithInt:myInt] stringValue]
stringValue
на NSNumber
вызывает descriptionWithLocale:nil
, давая Вам представление локализованной строки значения. Я не уверен, даст ли [NSString stringWithFormat:@"%d",myInt]
Вам правильно локализованный reprsentation myInt
.
olliej's округление метод является неправильным при отрицательных числах
, Вот альтернатива
int myInt = (int)(myDouble + (myDouble>0 ? 0.5 : -0.5))
, Вы могли, конечно, использовать округляющуюся функцию от math.h
Для округления необходимо, вероятно, использовать функции, определяемые C в math.h.
int roundedX = round(x);
Удерживают Опцию и дважды щелкают по round
in Xcode, и это покажет Вам страницу справочника с различными функциями для округления различных типов.
Это самый простой из известных мне способов:
float myFloat = 5.3;
NSInteger myInt = (NSInteger)myFloat;