Замените запятую на точку при получении значения с плавающей запятой NSString - PullRequest
9 голосов
/ 11 июля 2011

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

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

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

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

Спасибо заранее

Ответы [ 4 ]

20 голосов
/ 11 июля 2011

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

NSString *newString = [ammount stringByReplacingOccurrencesOfString:@"," withString:@"."];
4 голосов
/ 11 июля 2011

Вы можете использовать категорию NSString + JavaAPI , а затем выполнить:

NSString* newString = [myString replace: @"," withString: @"."];

Конечно, это может не помочь, если пользователь вводит что-то вроде 1,000,00.

2 голосов
/ 26 марта 2014

Вот изящный способ использования NSScanner:

    NSScanner *scanner = [NSScanner localizedScannerWithString:theInputString];
    float result;
    [scanner scanFloat:&result];
0 голосов
/ 09 декабря 2013

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

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