ios android 英文字母,iOS开发之限制中文、英文、数字的输入

目前的开发的项目中有限制字符输入的需求,趁此机会整理一下这个知识点。

1 严格限制输入中文。中文unicode码的范围是4E00-9FEA ,共20970个汉字。

- (BOOL)isChineseCharacter:(NSString*)source {

NSString *regex = @"^[\\u4E00-\\u9FEA]+$";

return ([source rangeOfString:regex options:NSRegularExpressionSearch].length>0);

}

2 严格限制输入英文字母

英文unicode码的范围是 0041-005A(大写字母)和 0061-007A(小写字母)

- (BOOL)isEnglishCharacter:(NSString*)source {

NSString *upperRegex = @"^[\\u0041-\\u005A]+$";

NSString *lowerRegex = @"^[\\u0061-\\u007A]+$";

BOOL isEnglish = (([source rangeOfString:upperRegex options:NSRegularExpressionSearch].length>0) || ([source rangeOfString:lowerRegex options:NSRegularExpressionSearch].length>0));

returnisEnglish;

}

3 严格限制输入数字。数字的unicode范围是 0030-0039

- (BOOL)isNumber:(NSString*)source {

NSString *regex = @"^[\\u0030-\\u0039]+$";

return ([source rangeOfString:regex options:NSRegularExpressionSearch].length>0);

}

以上方法仅是一种解决问题的思路,仅供参考。

在实际的情况中,往往不会是这么严格的限定。空格,标点符号你总得让用户去输入吧!所以,这个时候,在做限制的时候就要考虑到其他的情况。要不然用户该骂娘了!最重要的是,你下个月的“五险一金”可能要换个老板给你交了!

--------------------------- 分割线 ---------------------------

- (BOOL)stringContainsEmoji:(NSString*)source {

__blockBOOLreturnValue =NO;

[sourceenumerateSubstringsInRange:NSMakeRange(0, [source length])

options:NSStringEnumerationByComposedCharacterSequences

usingBlock:^(NSString*substring,NSRangesubstringRange,NSRangeenclosingRange,BOOL*stop) {

constunicharhs = [substringcharacterAtIndex:0];

if(0xd800<= hs && hs <=0xdbff) {

if(substring.length>1) {

constunicharls = [substringcharacterAtIndex:1];

constintuc = ((hs -0xd800) *0x400) + (ls -0xdc00) +0x10000;

if(0x1d000<= uc && uc <=0x1f77f) {

returnValue =YES;

}

}

}elseif(substring.length>1) {

constunicharls = [substringcharacterAtIndex:1];

if(ls ==0x20e3) {

returnValue =YES;

}

}else{

if(0x2100<= hs && hs <=0x27ff) {

returnValue =YES;

}elseif(0x2B05<= hs && hs <=0x2b07) {

returnValue =YES;

}elseif(0x2934<= hs && hs <=0x2935) {

returnValue =YES;

}elseif(0x3297<= hs && hs <=0x3299) {

returnValue =YES;

}elseif(hs ==0xa9|| hs ==0xae|| hs ==0x303d|| hs ==0x3030|| hs ==0x2b55|| hs ==0x2b1c|| hs ==0x2b1b|| hs ==0x2b50) {

returnValue =YES;

}

}

}];

returnreturnValue;

}

以下为补充内容,来自http://blog.csdn.net/j_r_k/article/details/78204578

在限制输入的时候,可能要用到全角转半角或半角转全角的情况。

至于什么是全角半角,不明白的可以移步这里充一下电。

全角转半角

- (NSString *)replaceSpecialWhitespace{

NSMutableString *convertedString = [self mutableCopy];

CFStringTransform((CFMutableStringRef)convertedString, NULL, kCFStringTransformFullwidthHalfwidth, false);

return [NSString stringWithString:convertedString];

}

半角转全角

- (NSString *)replaceNormalWhiteSpace{

NSMutableString *convertedString = [self mutableCopy];

CFStringTransform((CFMutableStringRef)convertedString, NULL, kCFStringTransformHiraganaKatakana, false);

return [NSString stringWithString:convertedString];

}

分割线下的内容,网侵删!

如有错误,欢迎评论区给予指正!

如果感觉对你有帮助,别忘了给俺点个赞!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值