Cocoa 将字符串转换为浮点
我从用户输入中得到一个NSString,它是这样的:$10000.00 我有一种方法可以去除$off:Cocoa 将字符串转换为浮点,cocoa,floating-point,nsstring,Cocoa,Floating Point,Nsstring,我从用户输入中得到一个NSString,它是这样的:$10000.00 我有一种方法可以去除$off: - (NSString*) stripDollarSign : (NSString*) stringToStrip { //check to see if the number is already formatted correctly NSRange dollarSignCheck = [stringToStrip rangeOfString:@"$"]; //o
- (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;
}
我的报税表是10000.00(仍然是NSString)
如果我对清理后的结果执行此操作:
float value = [inputString floatValue]
我明白了:
10点
如果我试着把它转换成NSDecimal,我会得到10
[[NSDecimalNumber alloc] initWithString:inputString];
我要怎么做才能转换成10000.00?您可以使用
NSString
方法stringByReplacingOccurrencesOfString:withString:
删除逗号。例如:
NSString *stringWithoutComma = [cleanedString stringByReplacingOccurrencesOfString:@"," withString:@""];
您可以使用
NSString
方法stringByReplacingOccurrencesOfString:with字符串:
删除逗号。例如:
NSString *stringWithoutComma = [cleanedString stringByReplacingOccurrencesOfString:@"," withString:@""];
或
或
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);
注意:您可能需要首先在格式化程序上手动设置区域设置-当我在我的位置测试时,它根本不能很好地处理磅符号。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);
注意:您可能需要首先在格式化程序上手动设置区域设置-当我在我的位置测试它时,它根本不能很好地处理磅符号。
NSNumberFormatter
:NSNumberFormatter
:您可能需要将区域设置为类似美国的东西,或者,此解决方案将与OP存在相同的问题。如果明确说明符号、分组分隔符和小数分隔符,则此解决方案似乎可以正常工作。虽然货币符号的位置可能存在问题,但某些地区会将其保留在末尾。但是OP是手动剥离的,所以这不是一个真正的问题。所以我想你是对的!我没想到。NSNumberFormatter API似乎没有对currencySymbol位置的任何引用。您可能必须将区域设置设置为类似于美国的设置,否则此解决方案将与OP有相同的问题。当您明确说明符号、分组分隔符和小数分隔符时,似乎可以正常工作。是,虽然货币符号的位置可能有问题,但有些地区会将其保留在最后。但是OP是手动剥离的,所以这不是一个真正的问题。所以我想你是对的!我没想到。NSNumberFormatter API似乎没有对currencySymbol位置的任何引用。谢谢,请始终忘记数字格式化程序是双向的。谢谢,请始终忘记数字格式化程序是双向的。