textField的代理方法拼接全局变量_textFieldText
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (_istextField) {
// 123,4.05(全局_textFieldText1234不拼接)
if ([textField.text containsString:@"."]) {
}else {
// 123,4(全局_textFieldText1234拼接12345)
_textFieldText = [_textFieldText stringByAppendingString:string];
}
NSLog(@"_textFieldText = %@", _textFieldText);
}
return YES;
}
1.idTextField.text数字格式化,2.全局变量_textFieldText拼接后格式化
- (IBAction)updateAction:(UIButton *)sender {
if (_isFormatter) {
// 全局变量_textFieldText(12345)格式化(123,45.00)
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = kCFNumberFormatterDecimalStyle;
[formatter setMinimumFractionDigits:2];
[formatter setMaximumFractionDigits:2];
[formatter setFormatterBehavior:NSNumberFormatterBehaviorDefault];
NSString *formatterAmount = [formatter stringFromNumber:[NSNumber numberWithDouble:[_textFieldText doubleValue]]];
self.idTextField.text = formatterAmount;
}else {
_isFormatter = YES;
_istextField = YES;
// 全局变量_textFieldText 记录idTextField.text(1234)
_textFieldText = self.idTextField.text;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = kCFNumberFormatterDecimalStyle;
[formatter setMinimumFractionDigits:2];
[formatter setMaximumFractionDigits:2];
[formatter setFormatterBehavior:NSNumberFormatterBehaviorDefault];
NSString *formatterAmount = [formatter stringFromNumber:[NSNumber numberWithDouble:[self.idTextField.text doubleValue]]];
self.idTextField.text = formatterAmount;
NSLog(@"formatter之后:%@", formatterAmount);
}
}
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSString *string = [formatter stringFromNumber:[NSNumber numberWithInt:123456789]];
NSLog(@"Formatted number string:%@",string);
输出结果为:[1223:403] Formatted number string:123,456,789
enum {
NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle,
NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle,
NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle,
NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,
NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,
NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle
NSNumberFormatterRoundCeiling = kCFNumberFormatterRoundCeiling,//四舍五入,原值2.7999999999,直接输出3
NSNumberFormatterRoundFloor = kCFNumberFormatterRoundFloor,//保留小数输出2.8 正是想要的
NSNumberFormatterRoundDown = kCFNumberFormatterRoundDown,//加上了人民币标志,原值输出¥2.8
NSNumberFormatterRoundUp = kCFNumberFormatterRoundUp,//本身数值乘以100后用百分号表示,输出280%
NSNumberFormatterRoundHalfEven = kCFNumberFormatterRoundHalfEven,//原值表示,输出2.799999999E0
NSNumberFormatterRoundHalfDown = kCFNumberFormatterRoundHalfDown,//原值的中文表示,输出二点七九九九。。。。
NSNumberFormatterRoundHalfUp = kCFNumberFormatterRoundHalfUp //原值中文表示,输出第三
};
typedef NSUInteger NSNumberFormatterStyle;
各个枚举对应输出数字格式的效果如下:
[1243:403] Formatted number string:123456789
[1243:403] Formatted number string:123,456,789
[1243:403] Formatted number string:¥123,456,789.00
[1243:403] Formatted number string:-539,222,988%
[1243:403] Formatted number string:1.23456789E8
[1243:403] Formatted number string:一亿二千三百四十五万六千七百八十九
其中第三项和最后一项的输出会根据系统设置的语言区域的不同而不同
</pre><pre name="code" class="objc">