• UITextField中文输入法输入时对字符长度的限制 输入时对字符类型的限制


    检索一个字符串的长度的话:直接用 length,去进行判断就行了,

    如果要检索字符串是否是自己要限制的类型的话,可以用正则表达式:

    举个例子:
       匹配9-15个由字母/数字组成的字符串的正则表达式:

    
    
    NSString * regex = @"^[A-Za-z0-9]{9,15}$";
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
        BOOL isMatch = [pred evaluateWithObject:txtfldPhoneNumber.text];
    
    
    
    如果只限制让输入中文和英文的话,可以这样设置:
    NSString *regex = @"[a-zA-Zu4e00-u9fa5][a-zA-Zu4e00-u9fa5]+";
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
                
       if(![pred evaluateWithObject: _textField.text])
         {
            //此动画为弹出
            UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示" message:@"昵称只能由中文、字母组成" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];
            [alertView show];
            return;
         }else
         {
            //代理方法的实现
            [self.delegate sendName:_textField.text];
            [self.navigationController popViewControllerAnimated:YES];
         }
    
    
    
    如果要单个限制的话,可以宏定义:
    #define NUMBERS     @"0123456789
    "
    #define kAlphaNum   @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
    #define kAlpha      @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    #define kNumber     @"0123456789"
    #define kHans       @"zh-Hans"
    #define HNMUBERS     @"0123456789./*-+~!@#$%^&()_+-=,./;'[]{}:<>?`"
    然后在-(BOOL)textField:(UITextField *)textField 
    shouldChangeCharactersInRange:(NSRange)range 
    replacementString:(NSString *)string 方法里面进行限制的操作:
        NSCharacterSet *cs;
        
        cs = [[NSCharacterSet characterSetWithCharactersInString:HNMUBERS]invertedSet];
        
        NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""]; //按cs分离出数组,数组按@""分离出字符串
        
        BOOL canChange = [string isEqualToString:filtered];
        
        if(canChange) {
    
            [WYTools showTextOnlyHud:@"请输入英文或中文" delay:1.0];
            return NO;
        }
        
        return YES;
    
    
    替换不同的宏定义就可以了!


  • 相关阅读:
    Python解析Yahoo的XML格式的天气预报数据
    如何卸载wineQQ?
    纪念我的第一篇
    hihocoder1062 最近公共祖先·一
    hihocoder1055 刷油漆(树形DP)
    hihocoder1050 树中的最长路径
    hihocoder1049 根据二叉树的先序序列和中序序列求后序序列
    hihocoder1044 状态压缩
    hihocoder1043 完全背包
    hihocoder1038 01背包
  • 原文地址:https://www.cnblogs.com/hero11223/p/5174826.html
Copyright © 2020-2023  润新知