NSString が米国通貨としてフォーマットされているかどうかを検証する簡単な方法はありますか?
したがって、私が確認しようとしているのは、文字 0 が $ であり、次の文字は string.length-3 を除いて数値であり、小数点である可能性があることです (変更がオプションであることを示す)。
したがって、これは $1000.00 を通過し、これは $1000 を通過しますが、これは $1000B に失敗します。
ありがとう
簡単な方法の 1 つは、次の正規表現を使用して文字列を検証することです。
^[$][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
だけstringFromNumber
でなく、 も持っていnumberFromString
ます。
NSString *string = @"$1,000.00";
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
NSNumber *number = [numberFormatter numberFromString:string];
if (number) {
// Success
}