是否有快速验证NSString是否格式化为美国货币的方法?
所以我要确认的是字符0是$,以下字符是数字,但string.length-3除外,它可以是小数(显示更改是可选的)。
所以这通过$ 1000.00并且这通过1000美元,但这将失败$ 1000B。
由于
答案 0 :(得分:9)
一种简单的方法是使用这个正则表达式验证字符串:
^[$][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");
}
答案 1 :(得分:3)
NSNumberFormatter
不仅有stringFromNumber
,还有numberFromString
。
NSString *string = @"$1,000.00";
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
NSNumber *number = [numberFormatter numberFromString:string];
if (number) {
// Success
}