[iOS学习] NSCharacterSet的使用详解

NSCharacterSet和NSMutableCharacterSet是用来表示一组Unicode字符,它经常与NSString及NSScanner组合起来使用,在不同的字符上做过滤、删除或者分割操作。

1. 系统提供的常用的创建NSCharacterSet的类方法

[NSCharacterSet alphanumericCharacterSet];          //所有数字和字母(大小写)  
[NSCharacterSet decimalDigitCharacterSet];          //0-9的数字  
[NSCharacterSet letterCharacterSet];                //所有字母  
[NSCharacterSet lowercaseLetterCharacterSet];       //小写字母  
[NSCharacterSet uppercaseLetterCharacterSet];       //大写字母  
[NSCharacterSet punctuationCharacterSet];           //标点符号  
[NSCharacterSet whitespaceAndNewlineCharacterSet];  //空格和换行符  
[NSCharacterSet whitespaceCharacterSet];            //空格  

2. 通过自定义创建NSCharacterSet的方法

[NSCharacterSet characterSetWithCharactersInString:@"Hello"]; //String中的文字组成的set  
[NSCharacterSet characterSetWithRange:NSMakeRange(48, 10)]]; // ascll码,此处为(0-9)  
[[NSCharacterSet decimalDigitCharacterSet] invertedSet]; // 数字之外的字符组成的set  

3. 判断一个字符是否在set中—例子中是判断0是否在数字set中

[[NSCharacterSet decimalDigitCharacterSet] characterIsMember:48];  

4. 判断一个set是否是另一个set的”超set”

[[NSCharacterSet alphanumericCharacterSet] isSupersetOfSet:[NSCharacterSet decimalDigitCharacterSet]

5. NSMutableCharacter的方法

NSMutableCharacterSet *set1 = [NSMutableCharacterSet characterSetWithCharactersInString:@"Hell"];  
NSMutableCharacterSet *set2 = [NSMutableCharacterSet characterSetWithCharactersInString:@"ello"]; 
//去掉某些字符  
[set2 removeCharactersInString:@"e"]; //--->l, o  
//加上某些字符  
[set2 addCharactersInString:@"e"];    //--->e, l, o  
//set相加  
[set2 formUnionWithCharacterSet:set1]; //--->H,e,l,o  
//set交集 
[set2 formIntersectionWithCharacterSet:set1]; //--->e,l 
//set取反
[set2 invert];  

例子

//例子1:去除两边的空格  
[@"  aaa   " stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];  
//例子2:通过数字把字符串变成数组  
[@"a1aa2aaa3aaaa4aaaaa" componentsSeparatedByCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]];  

一个非常好的例子,来源于http://nshipster.com/nscharacterset/, 去掉多余的空格(包括两端的和中间的)

NSString *exampleStr = @" My name    is Johnny!";  
exampleStr = [exampleStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];  
NSArray *exampleArr = [exampleStr componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];  
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self <> ''"];  
exampleArr = [exampleArr filteredArrayUsingPredicate:predicate];  
exampleStr = [exampleArr componentsJoinedByString:@" "];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本demo是WKWebView的基本使用和交互 ,实现了原生调用js的方法、js调用原生的方法、通过拦截进行交互的方法;修改内容 加入沙盒 / /加载沙盒 不带参数 // NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); // NSString * path = [paths objectAtIndex:0]; // path = [path stringByAppendingString:[NSString stringWithFormat:@"/app/html/index.html"]]; // NSURL *url = [NSURL URLWithString:[[NSString stringWithFormat:@"file://%@",path] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]] relativeToURL:[NSURL fileURLWithPath:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject]]; // [self.wkView loadFileURL:url allowingReadAccessToURL:[NSURL fileURLWithPath: [paths objectAtIndex:0]]]; // 带参数 /* NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString * path = [paths objectAtIndex:0]; path = [path stringByAppendingString:[NSString stringWithFormat:@"/app/html/index.html"]]; NSURL * url = [NSURL fileURLWithPath:path isDirectory:NO]; NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO]; [queryItemArray addObject:[NSURLQueryItem queryItemWithName:@"version" value:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]]]; [urlComponents setQueryItems:queryItemArray]; [self.wkView loadFileURL:urlComponents.URL allowingReadAccessToURL:[NSURL fileURLWithPath: [paths objectAtIndex:0]]]; */

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值