Замените запятую точкой при получении floatvalue NSString

Я хочу, чтобы пользователи могли вводить значения выше 0 на сумму денег в моем приложении. Таким образом, 0,0 или любое представление нуля будет неприемлемым, но 0,1 будет принято, например.

для этого я планировал получить значение float NSString и сравнить его с 0.0, но это не работает, так как наши десятичные числа должны быть разделены запятой, всегда (из-за бизнес-требования). Если запятые были точками, то сравнение делает работа.

какой самый достойный способ заменить запятые точками в моих текстах?

PS: пользователь ограничен вводить только цифры и только одну запятую, для десятичной части. И на самом деле мне было интересно, если это sthg, что можно сделать с номером форматирования или так...

Thx заранее

4 ответов


Вы можете просто использовать stringByReplacingOccurrencesOfString

NSString *newString = [ammount stringByReplacingOccurrencesOfString:@"," withString:@"."];

можно использовать NSString + JavaAPI


вот аккуратный способ использовать NSScanner:

    NSScanner *scanner = [NSScanner localizedScannerWithString:theInputString];
    float result;
    [scanner scanFloat:&result];

Apple рекомендует использовать NSScanner. это код, который я использую:

NSScanner *scanner;
NSLocale *local =[NSLocale currentLocale ];
[scanner setLocale:local];
float result;
scanner = [NSScanner localizedScannerWithString:<YOUR NSString>];
[scanner scanFloat:&result];