php ios 判断字符串长度,iOStextfield 限制输入字符长度和过滤表情符号

//增加修改框

-(void)creatSaveView{

UILabel * lab = [[UILabel alloc]init];

if (self.searchType == 1) {

lab.frame = CGRectMake(14, 8 * KWIDTH + 64, IPHONE_WIDTH - 100, 16 *KWIDTH);

}else{

lab.frame = CGRectMake(14, 8 * KWIDTH, IPHONE_WIDTH - 100, 16 * KWIDTH);

}

lab.text = @"备注名";

lab.font = [UIFont systemFontOfSize:14];

lab.textColor = kColor(137, 137, 137);

[self.view addSubview:lab];

UIView *view=[[UIView alloc] init];

if (self.searchType == 1) {

view.frame = CGRectMake(0, 32*KWIDTH + 64, IPHONE_WIDTH, 40*KWIDTH);

}else{

view.frame = CGRectMake(0, 32*KWIDTH, IPHONE_WIDTH, 40*KWIDTH);

}

UIView *lineViewlight3=[[UIView alloc] initWithFrame:CGRectMake(0,0,IPHONE_WIDTH, 0.5)];

lineViewlight3.backgroundColor=kColor(200,200 , 200);

lineViewlight3.alpha=0.8;

[view addSubview:lineViewlight3];

UIView *lineViewlight4=[[UIView alloc] initWithFrame:CGRectMake(0,40*KWIDTH-0.5, IPHONE_WIDTH, 0.5)];

lineViewlight4.backgroundColor=kColor(200,200 , 200);

lineViewlight4.alpha=0.7;

[view addSubview:lineViewlight4];

view.backgroundColor=[UIColor whiteColor];

_nameField = [[UITextField alloc]initWithFrame:CGRectMake(10*KWIDTH, 0, IPHONE_WIDTH-15*KWIDTH, 40*KWIDTH)];

_nameField.text = self.NameField;

_nameField.borderStyle = UITextBorderStyleNone;

_nameField.clearButtonMode= UITextFieldViewModeAlways;

[[NSNotificationCenter defaultCenter]addObserver:selfselector:@selector(textFiledEditChanged:)

name:@"UITextFieldTextDidChangeNotification"

object:_nameField];

[view addSubview:_nameField];

[self.view addSubview:view];

}

-(void)textFiledEditChanged:(NSNotification*)obj{

UITextField *textField = (UITextField *)obj.object;

//过滤掉系统表情

//    UITextView * textView;

//

//    NSRange textRange = [textView selectedRange];

//    [textView setText:[self disable_emoji:[textView text]]];

//    [textView setSelectedRange:textRange];

NSString *toBeString = textField.text;

DSLog(@"-----toBeString  1  ----%@",toBeString);

BOOL isEmoj = [self stringContainsEmoji:toBeString];

NSString * _showStr;

toBeString = [self disable_emoji:toBeString];

//    textField.text = toBeString;

DSLog(@"-----toBeString   2  -----%@",toBeString);

NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; //键盘输入模式

if([lang isEqualToString:@"zh-Hans"]) { //简体中文输入,包括简体拼音,健体五笔,简体手写

UITextRange *selectedRange = [textField markedTextRange];

//获取高亮部分

UITextPosition *position = [textFieldpositionFromPosition:selectedRange.start offset:0];

//没有高亮选择的字,则对已输入的文字进行字数统计和限制

if(!position) {

if(toBeString.length > kHZMaxLength) {

textField.text = [toBeString substringToIndex:kHZMaxLength];

_showStr = [toBeString substringToIndex:kHZMaxLength];

}

}

//有高亮选择的字符串,则暂不对文字进行统计和限制

else{

}

}

//中文输入法以外的直接对其统计限制即可,不考虑其他语种情况

else{

if(toBeString.length > kEGMaxLength) {

textField.text= [toBeString substringToIndex:kEGMaxLength];

_showStr = [toBeString substringToIndex:kEGMaxLength];

}

}

DSLog(@"   _showStr   %@",_showStr);

if (isEmoj) {

if ([_showStr length]) {

textField.text = _showStr;

}else{

textField.text = toBeString;

}

}

}

//判断NSString字符串是否包含emoji表情

- (BOOL)stringContainsEmoji:(NSString *)string

{

__block BOOL returnValue =NO;

[string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString*substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {

const unichar hs = [substring characterAtIndex:0];

// surrogate pair

if (0xd800) {

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

if (substring.length > 1) {

const unichar ls = [substring characterAtIndex:1];

const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) +0x10000;

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

returnValue =YES;

}

}

}else if (substring.length > 1) {

const unichar ls = [substring characterAtIndex:1];

if (ls == 0x20e3) {

returnValue =YES;

}

}else {

// non surrogate

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

returnValue =YES;

}else if (0x2B05 <= hs && hs <= 0x2b07) {

returnValue =YES;

}else if (0x2934 <= hs && hs <= 0x2935) {

returnValue =YES;

}else if (0x3297 <= hs && hs <= 0x3299) {

returnValue =YES;

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

returnValue =YES;

}

}

}

}];

return returnValue;

}

#pragma Mark   ---  过滤表情

- (NSString *)disable_emoji:(NSString *)text

{

NSRegularExpression *regex = [NSRegularExpressionregularExpressionWithPattern:@"[^u0020-u007Eu00A0-u00BEu2E80-uA4CFuF900-uFAFFuFE30-uFE4FuFF00-uFFEFu0080-u009Fu2000-u201f

]" options:NSRegularExpressionCaseInsensitive error:nil];

NSString *modifiedString = [regex stringByReplacingMatchesInString:text

options:0

range:NSMakeRange(0, [text length])

withTemplate:@""];

return modifiedString;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525594.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

约稿——码字能赢得百万人生?不开玩笑

2018是写作的风口。你不信&#xff1f;你不能写&#xff1f;我们来看看人们是如何写作的——其实人人都能写。绝望中靠写作赢回人生&#xff0c;并且财务自由2015年&#xff0c;夏知凉遭遇生意破产和朋友背叛&#xff0c;负债几十万的他&#xff0c;电脑都被拿去抵债&#xff0…

透过日播放量超过6亿的《延禧攻略》,看2018视频网站格局

作者介绍徐麟目前就职于上海唯品会产品技术中心&#xff0c;哥大统计数据狗&#xff0c;从事数据挖掘&分析工作&#xff0c;喜欢用R&Python玩一些不一样的数据文章来源数据森麟如需转载&#xff0c;请联系原作者授权前言随着《延禧攻略》的播出&#xff0c;魏璎珞、富察…

oracle怎么以时间排序,oracle指定数据排序在前面怎么处理

最近工作碰到客户的特殊要求&#xff0c;需要将特定的数据排序在前面&#xff0c;然后才按时间顺序排序&#xff0c;这个之前还真没有碰到过&#xff0c;好在有万能的度娘&#xff0c;搜索了一下&#xff0c;发现可以实现&#xff0c;使用order by decode语句即可。对于order b…

无法解析的外部符号 protected: virtual struct wxEventTable const * __thiscal

刚开始学习VC&#xff0c;对它的东西都不懂&#xff0c;其中最使用DECLARE_EVENTSINK_MAP时出现了一个错误&#xff0c; Linking... LegendWin.obj : error LNK2001: unresolved external symbol "protected: virtual struct AFX_EVENTSINKMAP const * __thiscall CLegend…

如何优雅使用Docker?请收下这15个小技巧

图片来源&#xff1a;Unsplash作者介绍ElNinoT文章来源Java架构沉思录原文链接www.cnblogs.com/elnino/p/3899136.html如需转载&#xff0c;请联系原作者授权1获取最近运行容器的id 这是我们经常会用到的一个操作&#xff0c;按照官方示例&#xff0c;你可以这样做&#xff08;…

supervisor监控php进程程序,详解Supervisor进程守护监控(转)

Supervisor的配置2.0 创建目录&#xff0c;初始化配置文件mkdir /usr/supervisorecho_supervisord_conf > /usr/supervisor/supervisord.conf12mkdir/usr/supervisorecho_supervisord_conf>/usr/supervisor/supervisord.confecho_supervisord_conf详解&#xff1a;echo_s…

H264/ACC数据使用librtmp推流到服务器

这是本人第一次发表这个&#xff0c;首先声明本人也是个菜鸟&#xff01;都说使用librtmp很简单&#xff0c;但是在网上找了很久&#xff0c;还是被各种大神坑了。 其实我也还是有很多东西不懂&#xff0c;如果下面有什么问题的地方&#xff0c;还请各位大神指点纠正。 1.视频数…

从容器到微服务,技术架构、网络和生态详解

图片来源&#xff1a;Unsplash作者晗狄文章来源架构师技术联盟如需转载&#xff0c;请联系原作者授权谈起容器技术&#xff0c;不得不提Docker技术。Docker 是 PaaS 提供商 DotCloud 开源的一个高级容器引擎&#xff0c;源代码托管在 Github 上&#xff0c;基于Go语言并遵从Apa…

brew php imagemagick,关于node使用gm和imageMagic在mac的坑

之前在windows上使用gm和imageMagic还是很顺手的&#xff0c;换了mac开发程序&#xff0c;发现自己才是坑。。emmmm但是要使用gm对图片进行拼接操作&#xff0c;只能硬着头皮上了笔记如下&#xff1a;mac不能直接安装imageMagic&#xff0c;而gm执行是依赖imageMagic的&#xf…

彻底搞懂 python 中文乱码问题

前言 曾几何时 Python 中文乱码的问题困扰了我很多很多年&#xff0c;每次出现中文乱码都要去网上搜索答案&#xff0c;虽然解决了当时遇到的问题但下次出现乱码的时候又会懵逼&#xff0c;究其原因还是知其然不知其所以然。现在有的小伙伴为了躲避中文乱码的问题甚至代码中不使…

如何让Kubernetes集群生产可用?

图片来源&#xff1a;veer本文作者Steven Wong (VMware)Michael Gasch (VMware)文章翻译Karen Lee文章来源K8S技术社区原文链接https://kubernetes.io/blog/2018/08/03/out-of-the-clouds-onto-the-ground-how-to-make-kubernetes-production-grade-anywhere如需转载&#xff0…

计算方法matlab编程徐萃薇,计算方法课程设计--用Newton插值多项式处理磁化曲线.docx...

计算方法课程设计题 目: 用Newton插值多项式 处理磁化曲线 学 院&#xff1a; 理学院 班 级&#xff1a; 数学 15-1 学 生 姓 名&#xff1a; 陈昌林 学 生 学 号&#xff1a; 2014028281 指 导 教 师&#xff1a; 石瑞银2017年 06 月 19 日课程设计任务书姓名陈昌林班级数学15…

北京房租到底有多高? | 爬取北京海淀区一居室租房信息

图片来源&#xff1a;花瓣网文章来源人工智能与大数据生活如需转载&#xff0c;请联系原作者授权最近北京房租成了热门话题&#xff0c;到底北京的房租有多高&#xff1f;本次实战是爬取北京海淀区一居室的租房信息&#xff0c;共爬取了300套房源信息&#xff0c;看一下北京的房…

oracle adg switch over,Oracle11gr2_ADG管理之switchover补充

之前演示的switchver总是提示下面的错误,并且需要人工干预:DGMGRL> switchover to snewtest;Warning: You are no longer connected to ORACLE.Please complete the following steps to finish switchover:start up instance "newtest" of database "newtest…

租房有深坑?手把手教你如何用R速读评论+科学选房

图片来源&#xff1a;网络编译Hope、臻臻、CoolBoy文章来源大数据文摘出品如有转载&#xff0c;请联系原作者。最近&#xff0c;租房这事儿成了北漂族的一大bug&#xff0c;要想租到称心如意的房子&#xff0c;不仅要眼明手快&#xff0c;还得看清各类“前辈”的评价避开大坑。…

oracle查询删除时间戳,Oracle查询时间戳,建表时间,新建序列,误删数据

Oracle的时间戳格式查询如下:SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER NLS_TIMESTAMP_FORMAT.Oracle查询建表时间:SELECT CREATED FROM USER_OBJECTS WHERE OBJECT_NAMETABLENAME;新建序列(到时候改一下名字就行了):-- Create sequencecreate sequence SEQ_…

快速搭建Python+Selenium+Sublime 自动化测试环境方法

随着业内越来越多的公司对自动化测试的大力推行&#xff0c;对测试人员能够使用自动化工具的要求也随之增多。为了能让更多的同事在学习selenium的初期&#xff0c;能够顺利的迈出第一步&#xff0c;即可以通过代码操作selenium driver 调用浏览器打开目标网址&#xff0c;笔者…

oracle表空间如何压缩,Oracle里表空间的压缩

对于table空间的收缩是一个老生常谈的问题&#xff0c;不过却是一个一直都没有很透彻的讨论清楚过的问题。借ks_reny的机会&#xff0c;谈谈个人看法&#xff0c;有不及之处&#xff0c;希望高手引领更深入研究此话题。datafile是物理上的一个文件在下层就是基于文件系统的bloc…

刚刚,百度总裁张亚勤说……

作者奋笔疾书的小编原创文章&#xff0c;如有转载&#xff0c;请联系本公众号。9月4日&#xff0c; ABC SUMMIT百度云智峰会在上海举行。百度总裁张亚勤首先发表《云计算的新浪潮》主题演讲&#xff0c;他表示&#xff0c;我们已经全面进入物理世界数字化、AI as a Service、新…

pycharm 提示:this license **** has been cancelled(2)

目录 一.找到hosts文件 二.修改hosts文件 三.检查hosts文件是否修改成功 pycharm安装激活过程中&#xff0c;提示 this license **** has been cancelled 。这个问题并不是你的激活码不对&#xff0c;而是需要修改系统的hosts文件&#xff0c;下面详细讲解下如何修改hosts文…