gpt4 book ai didi

iphone - 如何验证 UITextField 中的输入(即数字输入)

转载 作者:太空狗 更新时间:2023-10-30 03:28:28 26 4
gpt4 key购买 nike

我是 iPhone 开发的新手,我有一个看起来很简单但我无法弄清楚的问题。如何验证用户是否在文本字段中输入了数字和小数?

我尝试了很多不同的方法,但我能得到的收盘价只允许以下形式的数字字符串:5.34 或 23.89。我需要它来允许数字,例如; 0.50 或 432.30,最后一个输入值为零。我试图通过将其转换为 float 然后再转换回字符串来检查字符串输入,但得到了上述结果。

任何帮助都会很棒(与示例代码相同!)谢谢!

最佳答案

我有一个类似的要求,但最终证明这个解决方案相当简单。不幸的是,与此问题相关的许多问题和答案都是关于验证或格式化数值,而不是控制用户可以输入的内容。

以下 shouldChangeCharactersInRange 委托(delegate)方法的实现是我的解决方案。一如既往,RegularExpressions 在这种情况下摇摆不定。 RegExLib.com 是有用的 RegEx 的极好来源。我不是 RegEx 大师,总是很难将它们放在一起,所以欢迎提出任何改进建议。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField == self.quantityTextField)
{
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];

NSString *expression = @"^([0-9]+)?(\\.([0-9]{1,2})?)?$";
NSError *error = nil;

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression
options:NSRegularExpressionCaseInsensitive
error:&error];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString
options:0
range:NSMakeRange(0, [newString length])];
if (numberOfMatches == 0)
return NO;
}

return YES;
}

上面的代码允许用户输入这些类型的值:1, 1.1, 1.11, .1, .11

关于iphone - 如何验证 UITextField 中的输入(即数字输入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1434568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com