Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSString:验证它是否为美国货币格式_Ios_Nsstring_Currency - Fatal编程技术网

Ios NSString:验证它是否为美国货币格式

Ios NSString:验证它是否为美国货币格式,ios,nsstring,currency,Ios,Nsstring,Currency,是否有一种快速方法可以验证NSString是否格式化为美元 因此,我想确认的是字符0是$,以下字符是数字字符,除了string.length-3,它可能是十进制,表示更改是可选的 所以这超过了1000美元,这超过了1000美元,但这将失败1000亿美元 谢谢NSNumberFormatter不仅有stringFromNumber,还有numberFromString NSNumberFormatter不仅具有stringFromNumber,还具有numberFromString 一种简单的方法

是否有一种快速方法可以验证NSString是否格式化为美元

因此,我想确认的是字符0是$,以下字符是数字字符,除了string.length-3,它可能是十进制,表示更改是可选的

所以这超过了1000美元,这超过了1000美元,但这将失败1000亿美元

谢谢

NSNumberFormatter不仅有stringFromNumber,还有numberFromString

NSNumberFormatter不仅具有stringFromNumber,还具有numberFromString


一种简单的方法是使用以下正则表达式验证字符串:

^[$][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");
}
下面是使用上述表达式的示例代码:

^[$][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");
}

一种简单的方法是使用以下正则表达式验证字符串:

^[$][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");
}
下面是使用上述表达式的示例代码:

^[$][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");
}

您没有说明在用户可编辑文本字段、静态标签或?中使用的是什么,但一般来说,任何答案都可能使用NSNumberFormatter^\$\d+?:\.\d{2}$@iPatel,如果这些相关问题与此问题重复,您应该投票以重复方式关闭此问题您没有说明在用户可编辑文本字段、静态标签或?中使用的是什么,但一般来说,任何答案都可能使用NSNumberFormatter^\$\d+?:\.\d{2}$@iPatel,如果这些相关问题中有任何一个与此问题重复,您应该投票以重复方式关闭此问题。谢谢,这就是我要找的。谢谢,这就是我要找的。所以在你的例子中,更改NSMakeRange0,string.length将使其具有动态性,对吗?在美国有效。是否有一种基于区域设置生成正则表达式的方法?为了符合用户的要求,我想您需要一个?在$之后,也可以使其成为可选的。此外,还需要扩展逗号。@PruitIgoe这是正确的。我硬编码了7,因为我也硬编码了@321.00美元,但一般来说你需要提供正确的长度。@MarcusAdams这是设计的:OP询问的是美元。使用NSNumberFormatterCurrencyStyle解决方案,在英国可以接受12.34英镑,在德国可以接受12.34欧元,这可能是可取的,也可能是不可取的。答案非常棒,非常完整!!因此,在您的示例中,更改NSMakerRange0,string.length将使其成为动态的,对吗?在美国是有效的。是否有一种基于区域设置生成正则表达式的方法?为了符合用户的要求,我想您需要一个?在$之后,也可以使其成为可选的。此外,还需要扩展逗号。@PruitIgoe这是正确的。我硬编码了7,因为我也硬编码了@321.00美元,但一般来说你需要提供正确的长度。@MarcusAdams这是设计的:OP询问的是美元。使用NSNumberFormatterCurrencyStyle解决方案,在英国可以接受12.34英镑,在德国可以接受12.34欧元,这可能是可取的,也可能是不可取的。答案非常棒,非常完整!!