C语言如何去掉非数字字符串,Objective-C中利用正则去除非数字字母汉字方法实例...
前言
今天碰到个需求,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中利用正则去除非数字字母汉字方法实例...相关推荐
- Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引
问题内容是:给定一个数组,给定一个数字.返回数组中可以相加得到指定数字的两个索引. 比如:给定nums = [2, 7, 11, 15], target = 9 那么要返回 [0, 1],因为2 + ...
- android string数字字符串如何使用科学计数法,JSONObject 偶遇 数字字符串变为科学计数法 如何变为普通数字字符串...
和 XML 一样,JSON 也是基于纯文本的数据格式.由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Nu ...
- c语言如何将8个字符串串联_C ++中的字符串串联:串联字符串的4种方法
c语言如何将8个字符串串联 In this article, we will unveil the various ways of performing string concatenation in ...
- matlab sheet名字,MATLAB得到excel多个非默认sheet名_怎样利用matlab去读取一个excel表中多个sheet的数据并导入一个sheet中?...
如何用matlab读取一个excel表格中的若干个工作表 如果数字: xlsread('e:/shiyanshuju/shiyanbiaoge','sheet1','B1:D1440') 最好个表格放 ...
- python查找数列中重复数字_在数组中找出重复的数字(异或法)
购买本课程后,可以加51CTO学院李宁老师官方交流群:550369460注意,该群只允许购买李宁老师课程的学员进行技术交流,加群时需要提供在51CTO购买李宁老师课程的订单编号(任何一个课程的订单编号 ...
- python数字字符串乘以2_Python基础(2)_数字和字符串类型
一.数据类型 1.数字 整型 Python的整型相当于C中的long型,Python中的整数可以用十进制,八进制,十六进制表示. >>> 10 10 --------->默认十 ...
- mysqlorderby数字字符串排序_Python中的元组排序和深度比较
比较Python中的东西.这听起来几乎是不需要教的,但是我发现Python的比较运算符经常被Python新手误解和低估. 我们来回顾一下Python的比较运算符如何处理不同类型的对象,然后看看如何使用 ...
- 字符串中利用正则表达式提取出数字,并存如数组
var str = $(this).html(); //$(this).html()的值是:Abcron Corp [PID:95210] AffId:[7] str.matc ...
- C语言与或非位运算 Java判断中 if条件
#include <stdio.h> int main(void) { char c1=92; char c2=92; printf("%d",c1|c2); prin ...
- html中怎么判断数字格式是否,javascript中怎么判断是否是数字?
JavaScript中判断是否是数字的方法:1.使用isNaN()函数判断.2.使用正则表达式/^[0-9]+.?[0-9]*/可以判断是否是数字.3.使用parseFloat()函数判断是否是数字. ...
最新文章
- Delphi 之Copyrect的使用
- Linux驱动修炼之道-内存映射
- SAP FI常用事务码
- java 合并流(SequenceInputStream)
- 苹果可弯曲屏幕新专利获准,折叠iPhone最快2020年现身?
- ZooKeeper 3.5.5 基础使用
- 【Siddhi】Flink Siddhi房间温度上升5度报警案例
- python中bar函数的用法_Python:如何在函数中使用progressbar
- 虚拟机安装Windows7镜像
- 极大似然函数求解_极大似然估计的理解与应用
- JavaScript查找最长的公共前缀
- 从堂兄平淡人生看人生价值的实现---有感于堂兄54岁成为家乡新闻人物
- 教会你ECshop安装百度分享按钮教程
- vue upload上传图片
- OpenGL---GLUT教程 GLUT初始化
- c语言编写五子棋报告,c语言报告五子棋.pdf
- javascript-按圆形排列DIV元素(一)---- 分析
- 服务器的全部作用,王者荣耀有哪些服务器_王者荣耀全部服务器功能详解_玩游戏网...
- 2019阿里P7社招面试题泄露;《警察抓小偷》,几人能答出来?
- 像素数字时钟html页面web前端源码
热门文章
- PaddlePaddle(5)——简单高效的部署与推理方法(Ⅱ)
- POJ 3360 H-Cow Contest
- 类的数据成员的一些注意事项
- Linq实战 之 Linq to Sql及Entity Framework操作详解
- Delphi中怎么结束线程(这个线程是定时执行的)(方案一)
- Linux 网络编程基础(一) ---------------客户端/服务器的简单实现
- BERT4GCN:利用BERT中间层特征增强GCN进行基于方面的情感分类
- 微软提出Layout,多模态任务也有预训练模型啦
- 【Albert】一文轻松理解Albert
- 【每日算法Day 78】面试经典题:能说出全部四种方法,不录用你都不可能!