Iphone Price ui文本字段:如何允许用户在文本字段中仅输入一个小数点,如283.99
我已经尝试了以下代码 这有助于我允许用户只输入数字和点(小数点) 但是问题是用户可以在这种方法中允许n个小数。 我只允许一个小数点 小数点后只有两位数 比如123.00、123423432353.99 但不像123.4.4、123.12345、123…23Iphone Price ui文本字段:如何允许用户在文本字段中仅输入一个小数点,如283.99,iphone,objective-c,uitextfield,nspredicate,Iphone,Objective C,Uitextfield,Nspredicate,我已经尝试了以下代码 这有助于我允许用户只输入数字和点(小数点) 但是问题是用户可以在这种方法中允许n个小数。 我只允许一个小数点 小数点后只有两位数 比如123.00、123423432353.99 但不像123.4.4、123.12345、123…23 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)str
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if (string.length == 0) {
return YES;
}
NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789."];
for (int i = 0; i < [string length]; i++) {
unichar c = [string characterAtIndex:i];
if ([myCharSet characterIsMember:c]) {
return YES;
}
}
UIAlertView *av = [[UIAlertView alloc] initWithTitle:nil message:@"Invalid input" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
[av show];
return NO;
}
-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串{
if(string.length==0){
返回YES;
}
NSCharacterSet*myCharSet=[NSCharacterSet characterSetWithCharactersInString:@“0123456789.”;
对于(int i=0;i<[字符串长度];i++){
unichar c=[string characterAtIndex:i];
if([myCharSet成员:c]){
返回YES;
}
}
UIAlertView*av=[[UIAlertView alloc]initWithTitle:nil消息:@“无效输入”委托:自取消按钮:@“解除”其他按钮:nil];
[视听节目];
返回否;
}
如何允许用户只输入一个小数点?文本字段也只允许在小数点后输入两位数字
提前感谢请尝试使用此代码…它可能有助于您并请实现您的功能。此代码仅适用于“.”之后的2位数字
请尝试使用此代码…它可能会帮助您并请实现您的功能。此代码仅适用于“.”之后的2位数字 最佳实践在需要执行任何字符串格式验证(如电子邮件、电话号码、货币等)时,请使用常规表达式。 这肯定会解决你的问题。下面是示例代码: 首先创建NSRegularExpression的实例
NSError error;
NSRegularExpression * regExp = [[NSRegularExpression alloc]initWithPattern:@"^\\d{0,10}(([.]\\d{1,2})|([.]))?$" options:NSRegularExpressionCaseInsensitive error:&error];
然后在相关方法中使用:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString * existingText = textField.text;
NSString * completeText = [existingText stringByAppendingFormat:@"%@",string];
if ([regExp numberOfMatchesInString:completeText options:0 range:NSMakeRange(0, [completeText length])])
{
if ([completeText isEqualToString:@"."])
[textField insertText:@"0"];
return YES;
}
else
return NO;
}
使用并让我知道它是否有效
最佳实践在需要执行任何字符串格式验证(如电子邮件、电话号码、货币等)时,请使用常规表达式。
这肯定会解决你的问题。下面是示例代码:
首先创建NSRegularExpression的实例
NSError error;
NSRegularExpression * regExp = [[NSRegularExpression alloc]initWithPattern:@"^\\d{0,10}(([.]\\d{1,2})|([.]))?$" options:NSRegularExpressionCaseInsensitive error:&error];
然后在相关方法中使用:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString * existingText = textField.text;
NSString * completeText = [existingText stringByAppendingFormat:@"%@",string];
if ([regExp numberOfMatchesInString:completeText options:0 range:NSMakeRange(0, [completeText length])])
{
if ([completeText isEqualToString:@"."])
[textField insertText:@"0"];
return YES;
}
else
return NO;
}
使用并让我知道它是否有效。
在计算完整文本时,您需要考虑范围参数。我想我正在考虑…它的工作很好。在计算完整文本时,需要考虑范围参数。我想我正在考虑……它的工作很好。请不要让你的问题得到回答!不管你是否找到了解决方案,都要跟进。对整个社区都有帮助,对那些寻求答案和解决问题的人都有帮助。请不要让你的问题得到回答!不管你是否找到了解决方案,都要跟进。对整个社区、寻找答案的人和解决问题的人都有帮助。