前言

今天碰到个需求,PM要求输入框中取出非字母数字汉字的输入.

带着这个疑问开始今天的文章

准备工作

创建个demo 代码如下

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UITextField *input;

@property (weak, nonatomic) IBOutlet UILabel *label;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

self.input.delegate = self;

[self.input addTarget:self action:@selector(textChange:) forControlEvents:UIControlEventEditingChanged];

}

//当文本内容改变时调用

- (void)textChange:(UITextField *)textField

{

//这里调用相关方法过滤字符串显示出来

self.label.text = //...;

}

在网上找了一圈大多都是使用谓词去判断时候包含,没有几个给出相应的处理字符串.

我找到了3种 处理字符串的方式

方案1 使用谓词过滤

方案2 使用正则过滤增加寻找的字符串长度

方案3 使用正则精简过滤字符串

方案1

- (NSString *)filterString1:(NSString *)str {

NSString *regex = @"^[a-zA-Z0-9\u4e00-\u9fa5]+";

NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

NSMutableString * retStr = [NSMutableString string];

for(NSInteger i=0; i< [str length];i++){

NSRange range = NSMakeRange(i, 1);

NSString *character = [str substringWithRange:range];

if([pred evaluateWithObject:character])

{

[retStr appendString:character];

}

}

return retStr;

}

这种方式虽然能实现 但是代码略显冗长,不过能就解决问题

//方案2

- (NSString *)filterString2:(NSString *)str {

NSString *regex = @"[^a-zA-Z0-9\u4e00-\u9fa5]";

NSMutableString *mstr = [NSMutableString stringWithFormat:@"%@", str];

NSUInteger i = [mstr replaceOccurrencesOfString:regex withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, mstr.length)];

return [NSString stringWithFormat:@"%@-长度:%zd",mstr,i];

}

同样的方法使用正则replaceOccurrencesOfString:withString:options:range:方法替换字符串

下面我们精简到2行代码

//方案3

- (NSString *)filterString3:(NSString *)str {

NSString *regex = @"[^a-zA-Z0-9\u4e00-\u9fa5]";

return [str stringByReplacingOccurrencesOfString:regex withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, str.length)];

}

最终方案3 得到的预期结果还是不错,推荐使用

总结

有些问题都是在工作中遇到,希望记录下来一起分享和学习.

源码下载:

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

C语言如何去掉非数字字符串,Objective-C中利用正则去除非数字字母汉字方法实例...相关推荐

  1. Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引

    问题内容是:给定一个数组,给定一个数字.返回数组中可以相加得到指定数字的两个索引. 比如:给定nums = [2, 7, 11, 15], target = 9 那么要返回 [0, 1],因为2 + ...

  2. android string数字字符串如何使用科学计数法,JSONObject 偶遇 数字字符串变为科学计数法 如何变为普通数字字符串...

    和 XML 一样,JSON 也是基于纯文本的数据格式.由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Nu ...

  3. c语言如何将8个字符串串联_C ++中的字符串串联:串联字符串的4种方法

    c语言如何将8个字符串串联 In this article, we will unveil the various ways of performing string concatenation in ...

  4. matlab sheet名字,MATLAB得到excel多个非默认sheet名_怎样利用matlab去读取一个excel表中多个sheet的数据并导入一个sheet中?...

    如何用matlab读取一个excel表格中的若干个工作表 如果数字: xlsread('e:/shiyanshuju/shiyanbiaoge','sheet1','B1:D1440') 最好个表格放 ...

  5. python查找数列中重复数字_在数组中找出重复的数字(异或法)

    购买本课程后,可以加51CTO学院李宁老师官方交流群:550369460注意,该群只允许购买李宁老师课程的学员进行技术交流,加群时需要提供在51CTO购买李宁老师课程的订单编号(任何一个课程的订单编号 ...

  6. python数字字符串乘以2_Python基础(2)_数字和字符串类型

    一.数据类型 1.数字 整型 Python的整型相当于C中的long型,Python中的整数可以用十进制,八进制,十六进制表示. >>> 10 10 --------->默认十 ...

  7. mysqlorderby数字字符串排序_Python中的元组排序和深度比较

    比较Python中的东西.这听起来几乎是不需要教的,但是我发现Python的比较运算符经常被Python新手误解和低估. 我们来回顾一下Python的比较运算符如何处理不同类型的对象,然后看看如何使用 ...

  8. 字符串中利用正则表达式提取出数字,并存如数组

    var str = $(this).html();             //$(this).html()的值是:Abcron Corp [PID:95210] AffId:[7] str.matc ...

  9. C语言与或非位运算 Java判断中 if条件

    #include <stdio.h> int main(void) { char c1=92; char c2=92; printf("%d",c1|c2); prin ...

  10. html中怎么判断数字格式是否,javascript中怎么判断是否是数字?

    JavaScript中判断是否是数字的方法:1.使用isNaN()函数判断.2.使用正则表达式/^[0-9]+.?[0-9]*/可以判断是否是数字.3.使用parseFloat()函数判断是否是数字. ...

最新文章

  1. Delphi 之Copyrect的使用
  2. Linux驱动修炼之道-内存映射
  3. SAP FI常用事务码
  4. java 合并流(SequenceInputStream)
  5. 苹果可弯曲屏幕新专利获准,折叠iPhone最快2020年现身?
  6. ZooKeeper 3.5.5 基础使用
  7. 【Siddhi】Flink Siddhi房间温度上升5度报警案例
  8. python中bar函数的用法_Python:如何在函数中使用progressbar
  9. 虚拟机安装Windows7镜像
  10. 极大似然函数求解_极大似然估计的理解与应用
  11. JavaScript查找最长的公共前缀
  12. 从堂兄平淡人生看人生价值的实现---有感于堂兄54岁成为家乡新闻人物
  13. 教会你ECshop安装百度分享按钮教程
  14. vue upload上传图片
  15. OpenGL---GLUT教程 GLUT初始化
  16. c语言编写五子棋报告,c语言报告五子棋.pdf
  17. javascript-按圆形排列DIV元素(一)---- 分析
  18. 服务器的全部作用,王者荣耀有哪些服务器_王者荣耀全部服务器功能详解_玩游戏网...
  19. 2019阿里P7社招面试题泄露;《警察抓小偷》,几人能答出来?
  20. 像素数字时钟html页面web前端源码

热门文章

  1. PaddlePaddle(5)——简单高效的部署与推理方法(Ⅱ)
  2. POJ 3360 H-Cow Contest
  3. 类的数据成员的一些注意事项
  4. Linq实战 之 Linq to Sql及Entity Framework操作详解
  5. Delphi中怎么结束线程(这个线程是定时执行的)(方案一)
  6. Linux 网络编程基础(一) ---------------客户端/服务器的简单实现
  7. BERT4GCN:利用BERT中间层特征增强GCN进行基于方面的情感分类
  8. 微软提出Layout,多模态任务也有预训练模型啦
  9. 【Albert】一文轻松理解Albert
  10. 【每日算法Day 78】面试经典题:能说出全部四种方法,不录用你都不可能!