ios 判断字符串中是否包含中文

主要是将oc字符串转成c的字符串(char*),然后判断c的字符串的长度,因为中文字符占得长度是英文字符的两倍。

//判断一个字符书不是中文。

-(BOOL)isChinese:(NSString*)c{

    int strlength = 0;

    char* p = (char*)[c cStringUsingEncoding:NSUnicodeStringEncoding];

    for (int i=0 ; i<[c lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++) {

        if (*p) {

            p++;

            strlength++;

        }

        else {

            p++;

        }

    }

    return ((strlength/2)==1)?YES:NO;

}



检验:

    NSString* str  = @"";

    NSLog(@"%d",[selfisChinese:str]);

    NSString* str2 = @"w";

    NSLog(@"%d",[selfisChinese:str2]);


iOS的Objective-C (OC) ,如果你想要限制用户在UITextField或UITextView等文本输入控件输入中文,可以通过设置键盘类型、正则表达式验证或者自定义输入代理来实现。以下是几种方法: 1. 键盘类型设置: - 如果你只需要支持英文输入,可以使用`UIKeyboardTypeASCIICapable`类型的键盘,它默认不会显示包含中文的键盘。 ```objective-c [inputTextField setKeyboardType:UIKeyboardTypeASCIICapable]; ``` 2. 正则表达式验证: 在文本框的`shouldChangeCharactersInRange:replacementString:`代理方法,检查输入的字符串是否包含你想要的字符(如英文字符)。 ```objective-c - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; // 使用正则表达式判断是否为英文或者其他允许的字符 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"^[a-zA-Z0-9]+$"]; return [predicate evaluateWithObject:newString]; } ``` 3. 自定义输入代理: 实现`UITextFieldDelegate`协议,然后在`textField:shouldInsertText:`方法过滤中文字符。 ```objective-c - (BOOL)textField:(UITextField *)textField shouldInsertText:(NSString *)text { if ([text rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"\u4e00-\u9fa5"]] != NSNotFound) { // 如果包含中文字符,返回NO阻止输入 return NO; } return YES; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值