是否有一個快速的方式,如果一個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