检查NSString是否为double

时间:2016-02-10 19:23:34

标签: ios objective-c

如何检查UITextField的文字是否为双倍?

如果输入的文本字段值是否为有效的double值,则需要进行简单验证?

有效的双倍值:1.001.011.00001

无效的双倍值:.0.1.001.111.0.11...0等。

mytxtfield.text=@"12.00"; //ok
mytxtfield.text=@"1.2..0"; // is invalid and so on

编辑:我的回答是有效的,而不是sahzad ali

//------------
-(BOOL)isvalidDouble:(NSString*)txtstring
{

    NSArray *dotSeparratedArray = [txtstring componentsSeparatedByString:@"."];

    NSInteger count=[dotSeparratedArray count];
    count=count-1;

    if(count >1)
    {
        return TRUE ; //invalid
    }
    return FALSE; //valid


}

2 个答案:

答案 0 :(得分:1)

您可以限制用户输入多个点,或者您可以在TextFieldDidEndEditing方法中使用相同的逻辑。如果componentsSeparatedByString返回大于2,则表示有多个点。

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

    NSArray *dotSeparratedArray = [myString componentsSeparatedByString:@"."];
    if([dotSeparratedArray count] >= 2)
    { 
        NSString *string1=[NSString stringWithFormat:@"%@",[dotSeparratedArray objectAtIndex:1]];
        return !([string1 length]>1);
    }
    return YES;
}

答案 1 :(得分:1)

我不知道这是否符合您的目的,但您可以使用NSNumberFormatter并根据您的需要对其进行自定义:

NSNumberFormatter *myFormatter = [[NSNumberFormatter alloc] init];

[myFormatter setFormatWidth:7];
[myFormatter setPaddingCharacter:@"0"];
[myFormatter setMinimumSignificantDigits:0];

[myFormatter setMinimum:@0];
[myFormatter setMaximum:@9999999];
[myClientIDTextField setFormatter:myFormatter];