Ios 如何在UITextField中显示逗号分隔值和分数值?
当用户以下面提到的所需格式输入文本时,我需要格式化文本 1) 当用户输入0作为第一个字符时,文本字段应将文本显示为0.00 2) 当用户输入1作为第二个字符时,文本字段应显示为0.01 3) 当用户输入2作为第三个字符时,文本字段应显示为0.12 4) 当用户输入3作为第四个字符时,文本字段应显示为1.23 5) 当用户输入4作为第五个字符时,文本字段应显示为12.34 这应该持续到7个整数位。最高值应为99,99999.00 我曾尝试使用数字格式化程序,但无法实现这一点。如果有任何解决方案,这将是非常有帮助的Ios 如何在UITextField中显示逗号分隔值和分数值?,ios,uitextfield,nsnumberformatter,Ios,Uitextfield,Nsnumberformatter,当用户以下面提到的所需格式输入文本时,我需要格式化文本 1) 当用户输入0作为第一个字符时,文本字段应将文本显示为0.00 2) 当用户输入1作为第二个字符时,文本字段应显示为0.01 3) 当用户输入2作为第三个字符时,文本字段应显示为0.12 4) 当用户输入3作为第四个字符时,文本字段应显示为1.23 5) 当用户输入4作为第五个字符时,文本字段应显示为12.34 这应该持续到7个整数位。最高值应为99,99999.00 我曾尝试使用数字格式化程序,但无法实现这一点。如果有任何解决方案,这
除此之外,我还需要在文本前面添加一个$符号以及逗号分隔符 由于您希望UITextField最多包含7个整数位数,因此需要验证每次修改,并防止任何导致数字大于7个整数位数的修改。我知道最简单的方法是UITextFieldDelegate方法
shouldChangeCharactersInRange
:
- (BOOL) textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string {
NSString* modifiedFieldText = [textField.text stringByReplacingCharactersInRange:range withString:string] ;
// Remove all characters except for the digits 0 - 9.
NSString* filteredToDigits = [modifiedFieldText stringByFilteringCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]] ;
// Change textField's text only if the result is <= 9 digits (7 integer digits and 2 fraction digits).
if ( filteredToDigits.length <= 9 ) {
// If you'd rather this method didn't change textField's text and only determined whether or not the change should proceed, you can move this code block into a method triggered by textField's Editing Changed, replacing this block with "return YES". You'll need to once again filter textField's text to only the characters 0 - 9.
NSNumberFormatter* numberFormatter = [NSNumberFormatter new] ;
numberFormatter.numberStyle = NSNumberFormatterCurrencyStyle ;
NSNumber* asNumber = @( filteredToDigits.doubleValue / 100.0 ) ;
textField.text = [numberFormatter stringFromNumber:asNumber] ;
}
// This method just changed textField's text based on the user's input, so iOS should not also change textField's text.
return NO ;
}
使用NSRegularExpression:)@有谁能解释为什么这个问题被投了这么多的反对票?连我都不明白为什么会有这么多的反对票?这个问题既不是无效的,也不是超出范围的。我只是想找到解决我问题的办法。有人能证明吗?Superr!!!非常感谢约翰。上面的答案真是妙不可言。。再次感谢。你能投票吗?是的,我在回答之前就投票了。
- (NSString*) stringByRemovingCharactersInSet:(NSCharacterSet*)charactersToRemove {
return [[self componentsSeparatedByCharactersInSet:charactersToRemove] componentsJoinedByString:@""] ;
}
- (NSString*) stringByFilteringCharactersInSet:(NSCharacterSet*)charactersToKeep {
NSCharacterSet* charactersToRemove = [charactersToKeep invertedSet] ;
return [self stringByRemovingCharactersInSet:charactersToRemove] ;
}