0

我从用户输入中得到一个 NSString,它是这样的:10,000.00 美元

我有一个剥离 $ 的方法:

- (NSString*) stripDollarSign : (NSString*) stringToStrip {

    //check to see if the number is already formatted correctly
    NSRange dollarSignCheck = [stringToStrip rangeOfString:@"$"];
    //only strip it if it has the $
    if (dollarSignCheck.location != NSNotFound) {

        NSString* cleanedString = [stringToStrip substringWithRange:NSMakeRange(1, stringToStrip.length-1)];
        return cleanedString;
    }

    return 0;

}

我的回报是 10,000.00(仍然是 NSString)。

如果我对清理后的结果执行此操作:

float value = [inputString floatValue]

我明白了:

10.00

如果我尝试将其转换为 NSDecimal 我得到 10

[[NSDecimalNumber alloc] initWithString:inputString];

我需要做些什么来转换它才能得到 10,000.00?

4

3 回答 3

2

NSNumberFormatter 乍一看似乎是一个不错的方法:

  NSString *currencyAmount = @"$10,000.00";
  NSLocale *englishLocale = [[NSLocale alloc] initWithLocaleIdentifier: @"en_US"];
  NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
  currencyFormatter.numberStyle = NSNumberFormatterCurrencyStyle;
  currencyFormatter.locale = englishLocale;
  NSNumber *number = [currencyFormatter numberFromString: currencyAmount];
  NSLog(@"Got amount: %@", number);

请注意,您可能需要先在格式化程序上手动设置语言环境——当我在我的位置测试它时,它根本不能很好地处理磅符号。

于 2013-05-13T15:38:38.337 回答
2
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setCurrencySymbol:@"$"];
[formatter setCurrencyGroupingSeparator:@","];
[formatter setCurrencyDecimalSeparator:@"."];

NSNumber *n = [formatter numberFromString:@"$10,000.00"];

或者

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setPositiveFormat:@"$###,###.##"];
[formatter setLenient:YES]; // This will forgive you for missing out the $ symbol
于 2013-05-13T15:26:41.573 回答
0

您可以使用该NSString方法stringByReplacingOccurrencesOfString:withString:删除逗号。例如:

NSString *stringWithoutComma = [cleanedString stringByReplacingOccurrencesOfString:@"," withString:@""];
于 2013-05-13T15:14:53.237 回答