检查UITextField的输入是否仅为数字

如何验证字符串输入UITextField?我想检查字符串是否为数字,包括小数点。



一只甜甜圈
浏览 501回答 3
3回答

有只小跳蛙

我在我的Mac应用程序中使用此代码,相同或类似的应该与iPhone一起使用。它基于RegexKitLite正则表达式,并在无效时将文本变为红色。static bool TextIsValidValue( NSString* newText, double &value ){    bool result = false;    if ( [newText isMatchedByRegex:@"^(?:|0|[1-9]\\d*)(?:\\.\\d*)?$"] ) {        result = true;        value = [newText doubleValue];    }    return result;}- (IBAction) doTextChanged:(id)sender;{    double value;    if ( TextIsValidValue( [i_pause stringValue], value ) ) {        [i_pause setTextColor:[NSColor blackColor]];        // do something with the value    } else {        [i_pause setTextColor:[NSColor redColor]];    }}

holdtom

您可以通过以下几行来完成:BOOL valid;NSCharacterSet *alphaNums = [NSCharacterSet decimalDigitCharacterSet];NSCharacterSet *inStringSet = [NSCharacterSet characterSetWithCharactersInString:myInputField.text];valid = [alphaNums isSupersetOfSet:inStringSet];    if (!valid) // Not numeric- 这是用于验证输入仅为数字字符。查看NSCharacterSet其他选项的文档。您可以使用characterSetWithCharactersInString指定任何有效输入字符集。

Qyouu

有几种方法可以做到这一点:使用NSNumberFormatter的numberFromString:方法。如果它可以正确解析字符串,或者不能解析字符串,则返回NSNumber nil。使用NSScanner删除任何非数字字符并查看字符串是否仍然匹配使用正则表达式IMO,使用类似-[NSString doubleValue]将不会是最好的选择,因为两者@"0.0"并@"abc"会有一个0的doubleValue的*值的方法都返回0,如果他们不能将字符串正确转换,所以这将是一个很难区分合法字符串@"0"和无效字符串。像C的strtol功能会有同样的问题。我认为使用NSNumberFormatter是最好的选择,因为它考虑了区域设置(即@"1,23"欧洲的数字,而@"1.23"美国的数字)。
打开App,查看更多内容
随时随地看视频慕课网APP