Ios 我有很多格式,比如-,()-,我想把textfield的值改成给定的格式,如何实现它。?

Ios 我有很多格式,比如-,()-,我想把textfield的值改成给定的格式,如何实现它。?,ios,objective-c,Ios,Objective C,我有很多格式,比如-,-,我想把textfield的值改成给定的格式,如何实现 一种方法是手动检查字符串并将其更改为字符串,我知道,还有其他有效的方法可以做到这一点吗?请允许我,我得到了不同格式的文本字段,如: **Format1** for Textfield1 : ####-###-### [I want to convert enter text of field to this format like 3333-333-333] **Format2** for Textfield2 :

我有很多格式,比如-,-,我想把textfield的值改成给定的格式,如何实现

一种方法是手动检查字符串并将其更改为字符串,我知道,还有其他有效的方法可以做到这一点吗?请允许我,我得到了不同格式的文本字段,如:

**Format1** for Textfield1 : ####-###-### [I want to convert enter text of field to this format like 3333-333-333]
**Format2** for Textfield2 : (###)-###-#### [I want to convert enter text of field to this format like (333)-333-3333]
**Format3** for Textfield3 : ##-##-## [I want to convert enter text of field to this format like 33-33-33] 
请让我知道,如果有一些有效的方法来处理它。谢谢

格式2

在textfield委托方法shouldChangeCharactersRange中添加if条件:


我是这样做的,希望这也能帮助其他人解决这个问题:

-(NSString *)getNewString:(NSString *)maskString textFieldText:(NSString *)textFieldText range:(NSRange)range newString:(NSString *)newString{

if ((range.location >= maskString.length)||((textFieldText.length-1) == range.location)) {
    return textFieldText;
}

range.length = 1;
NSMutableString *formattedStr = [textFieldText mutableCopy];
NSString *subString = [maskString substringWithRange:range];

if ([maskString characterAtIndex:range.location] != '#' )
{
    [formattedStr appendString:subString];

    if([self checkNextMaskRange:maskString WithRange:range])
        [formattedStr appendString:@" "];
}

return formattedStr;
}

可以这样称呼:

  -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

       if (range.location == 0 && [string isEqualToString:@" "])
                    return NO;

                NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS_ONLY_NEW] invertedSet];
                NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];

                NSUInteger newLength = [textField.text length] + [string length] - range.length;
                 textField.text = [self getNewString:maskString textFieldText:textField.text range:range newString:string];
                return (([string isEqualToString:filtered] ) && (newLength <=maskString.length));
    }

这里maskString是任何类似于-OR-etc的掩码,您可以传递任何内容。

它适用于所有格式吗?我想没有。请确认是否有。
  -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

       if (range.location == 0 && [string isEqualToString:@" "])
                    return NO;

                NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS_ONLY_NEW] invertedSet];
                NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];

                NSUInteger newLength = [textField.text length] + [string length] - range.length;
                 textField.text = [self getNewString:maskString textFieldText:textField.text range:range newString:string];
                return (([string isEqualToString:filtered] ) && (newLength <=maskString.length));
    }