是否有一个快速的方式,如果一个NSString的格式为美国货币验证?的NSString:验证它是在美国货币格式
所以我在寻找什么,以确认是字符0是$,下面的字符是除了string.length减-3数字可能是一个小数(示出其是可选的)。
所以这把$ 1000.00此经过1000 $,但这会失败$ 1000B。
感谢
是否有一个快速的方式,如果一个NSString的格式为美国货币验证?的NSString:验证它是在美国货币格式
所以我在寻找什么,以确认是字符0是$,下面的字符是除了string.length减-3数字可能是一个小数(示出其是可选的)。
所以这把$ 1000.00此经过1000 $,但这会失败$ 1000B。
感谢
NSNumberFormatter
不仅具有stringFromNumber
,但它也有numberFromString
。
NSString *string = @"$1,000.00";
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
NSNumber *number = [numberFormatter numberFromString:string];
if (number) {
// Success
}
谢谢,这就是我一直在寻找的。 – PruitIgoe 2013-04-10 14:13:01
一个简单的方法将是使用此正则表达式来验证串:
^[$][0-9]+([.][0-9]{2})?$
^^^^^^^^^
| | | | | | | ||
| | | | | | | |+-- End-of-input marker
| | | | | | | +--- Optional
| | | | | | +------ Repeated exactly two times
| | | | | +---------- A decimal digit
| | | | +-------------- A dot (literal)
| | | +----------------- Repeated once or more
| | +-------------------- A decimal digit
| +------------------------ The dollar sign (literal)
+-------------------------- Start-of-input marker
下面是一个使用上述表达式的样本代码:
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"^[$][0-9]+([.][0-9]{2})?$"
options:NSRegularExpressionCaseInsensitive
error:&error];
if ([regex numberOfMatchesInString:@"$321.05" options:0 range:NSMakeRange(0, 7)]) {
NSLog(@"Success");
}
HTTP://计算器.com/questions/2369666/how-to-use-nsnumberformatter-for-currency-to-print-in-uitextfield – iPatel 2013-04-10 14:05:55
你没有说明你在用什么(用户可编辑的文本字段,静态标签或?),但一般来说,任何答案都是LY利用NSNumberFormatter – 2013-04-10 14:06:00
'^ \ $ \ d +的?(?:\。\ d {2})$' – Joe 2013-04-10 14:06:09