为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只甜甜圈 2019-09-20 17:22:40
如何验证字符串输入UITextField?我想检查字符串是否为数字,包括小数点。
查看完整描述

3 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

我在我的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]];

    }

}


查看完整回答
反对 回复 2019-09-20
?
holdtom

TA贡献1805条经验 获得超10个赞

您可以通过以下几行来完成:


BOOL valid;

NSCharacterSet *alphaNums = [NSCharacterSet decimalDigitCharacterSet];

NSCharacterSet *inStringSet = [NSCharacterSet characterSetWithCharactersInString:myInputField.text];

valid = [alphaNums isSupersetOfSet:inStringSet];    

if (!valid) // Not numeric

- 这是用于验证输入仅为数字字符。查看NSCharacterSet其他选项的文档。您可以使用characterSetWithCharactersInString指定任何有效输入字符集。


查看完整回答
反对 回复 2019-09-20
?
Qyouu

TA贡献1786条经验 获得超11个赞

有几种方法可以做到这一点:

  1. 使用NSNumberFormatter的numberFromString:方法。如果它可以正确解析字符串,或者不能解析字符串,则返回NSNumber nil

  2. 使用NSScanner

  3. 删除任何非数字字符并查看字符串是否仍然匹配

  4. 使用正则表达式

IMO,使用类似-[NSString doubleValue]将不会是最好的选择,因为两者@"0.0"@"abc"会有一个0的doubleValue的*值的方法都返回0,如果他们不能将字符串正确转换,所以这将是一个很难区分合法字符串@"0"和无效字符串。像C的strtol功能会有同样的问题。

我认为使用NSNumberFormatter是最好的选择,因为它考虑了区域设置(即@"1,23"欧洲的数字,而@"1.23"美国的数字)。


查看完整回答
反对 回复 2019-09-20
  • 3 回答
  • 0 关注
  • 500 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信