NSCharacter​Set 和 NSMutableCharacterSet  用面向对象的方式来表示一组Unicode字符,它经常与NSStringNSScanner组合起来使用,在不同的字符上做过滤、删除或者分割操作。为了给你提供这些字符是哪些字符的直观印象,请看看NSCharacterSet 提供的类方法

  • alphanumericCharacterSet
  • capitalizedLetterCharacterSet
  • controlCharacterSet
  • decimalDigitCharacterSet
  • decomposableCharacterSet
  • illegalCharacterSet
  • letterCharacterSet
  • lowercaseLetterCharacterSet
  • newlineCharacterSet
  • nonBaseCharacterSet
  • punctuationCharacterSet
  • symbolCharacterSet
  • uppercaseLetterCharacterSet
  • whitespaceAndNewlineCharacterSet
  • whitespaceCharacterSet

我们使用下边的方法 打印看看这些方法

 void dumpCharacterSet( NSString *name )
{
unichar idx;
NSCharacterSet *cset = [NSCharacterSet performSelector: NSSelectorFromString(name)]; printf("Character set (0-127): %s\n7-Bit: ", [name UTF8String]); for( idx = ; idx < ; idx++ )
{
if ( == idx ) {
printf( "\n8-Bit: " );
} //Returns a Boolean value that indicates whether a given character is in the receiver.
if ([cset characterIsMember: idx])
{
//判断字符c是否为可打印字符(含空格)
if ( isprint(idx) ) {
printf( "%c ", idx);
}
else {
printf( "%02x ", idx);
}
}
}
printf("\n\n");
}
 // Reference output...
dumpCharacterSet( @"alphanumericCharacterSet" );
dumpCharacterSet( @"controlCharacterSet" );
dumpCharacterSet( @"decimalDigitCharacterSet" );
dumpCharacterSet( @"decomposableCharacterSet" );
dumpCharacterSet( @"illegalCharacterSet" );
dumpCharacterSet( @"letterCharacterSet" );
dumpCharacterSet( @"lowercaseLetterCharacterSet" );
dumpCharacterSet( @"nonBaseCharacterSet" );
dumpCharacterSet( @"punctuationCharacterSet" );
dumpCharacterSet( @"uppercaseLetterCharacterSet" );
dumpCharacterSet( @"whitespaceAndNewlineCharacterSet" );
dumpCharacterSet( @"whitespaceCharacterSet" );

打印结果如下

Character set (-): alphanumericCharacterSet
-Bit: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z
-Bit: aa b2 b3 b5 b9 ba bc bd be c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f8 f9 fa fb fc fd fe ff Character set (-): controlCharacterSet
-Bit: 0a 0b 0c 0d 0e 0f 1a 1b 1c 1d 1e 1f 7f
-Bit: 8a 8b 8c 8d 8e 8f 9a 9b 9c 9d 9e 9f ad Character set (-): decimalDigitCharacterSet
-Bit:
-Bit: Character set (-): decomposableCharacterSet
-Bit:
-Bit: c0 c1 c2 c3 c4 c5 c7 c8 c9 ca cb cc cd ce cf d1 d2 d3 d4 d5 d6 d9 da db dc dd e0 e1 e2 e3 e4 e5 e7 e8 e9 ea eb ec ed ee ef f1 f2 f3 f4 f5 f6 f9 fa fb fc fd ff Character set (-): illegalCharacterSet
-Bit:
-Bit: Character set (-): letterCharacterSet
-Bit: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z
-Bit: aa b5 ba c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f8 f9 fa fb fc fd fe ff Character set (-): lowercaseLetterCharacterSet
-Bit: a b c d e f g h i j k l m n o p q r s t u v w x y z
-Bit: b5 df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f8 f9 fa fb fc fd fe ff Character set (-): nonBaseCharacterSet
-Bit:
-Bit: Character set (-): punctuationCharacterSet
-Bit: ! " # % & ' ( ) * , - . / : ; ? @ [ \ ] _ { }
-Bit: a1 a7 ab b6 b7 bb bf Character set (-): uppercaseLetterCharacterSet
-Bit: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
-Bit: c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d8 d9 da db dc dd de Character set (-): whitespaceAndNewlineCharacterSet
-Bit: 0a 0b 0c 0d
-Bit: a0 Character set (-): whitespaceCharacterSet
-Bit:
-Bit: a0

非常的直观,当我们 使用的时候对照这个打印结果操作就行,

下边再说一下如何过滤的

 // Set up for reading testString
NSString *testString = @"Los Angeles;8.25;0.580561574;1,Tokyo;1.9;0.643872234;1;Honolulu,0;0;0;Toronto;7.9;5.3322;3;";
// Parse CSV with NSScanner
NSScanner *myScanner = [NSScanner scannerWithString:testString]; NSString *location;
float theRevenue;
float thePercent;
int theRank; // Set up data delimiter using semicolon//分号 NSCharacterSet *CharacterSet; //Returns a character set containing the characters in a given string.
CharacterSet = [NSCharacterSet characterSetWithCharactersInString:@";,"]; // Double check scanner string
NSLog (@"Scanner string\n"); //Returns the string with which the receiver was created or initialized.
NSLog (@"%@",[myScanner string]); // scanner loop start
while ([myScanner isAtEnd] == NO) { if ( [myScanner scanUpToCharactersFromSet:CharacterSet intoString:&location] ) {
NSLog (@"%@",location);
} // Skipping the ; and ,delimiter
if([myScanner scanString:@";" intoString:NULL] || [myScanner scanString:@"," intoString:NULL])
;
// Read Revenue data up to ; delimiter and skipping
//Scans for a float value, returning a found value by reference.
if([myScanner scanFloat:&theRevenue])
NSLog(@"%lf",theRevenue);
if([myScanner scanString:@";" intoString:NULL] || [myScanner scanString:@"," intoString:NULL])
; // Read Percentage data up to ; delimiter and skipping
if([myScanner scanFloat:&thePercent])
NSLog(@"%lf",thePercent);
if([myScanner scanString:@";" intoString:NULL] || [myScanner scanString:@"," intoString:NULL])
; // Read Ranking data up to ; delimiter and skipping
if([myScanner scanInt:&theRank])
NSLog(@"%i",theRank);
if([myScanner scanString:@";" intoString:NULL] || [myScanner scanString:@"," intoString:NULL])
;
}

打印结果如下

-- ::37.967 ModelBenchmark[:] Los Angeles
-- ::37.967 ModelBenchmark[:] 8.250000
-- ::37.967 ModelBenchmark[:] 0.580562
-- ::37.968 ModelBenchmark[:]
-- ::37.968 ModelBenchmark[:] Tokyo
-- ::37.968 ModelBenchmark[:] 1.900000
-- ::37.968 ModelBenchmark[:] 0.643872
-- ::37.968 ModelBenchmark[:]
-- ::37.968 ModelBenchmark[:] Honolulu
-- ::37.968 ModelBenchmark[:] 0.000000
-- ::37.968 ModelBenchmark[:] 0.000000
-- ::37.968 ModelBenchmark[:]
-- ::37.968 ModelBenchmark[:] Toronto
-- ::37.968 ModelBenchmark[:] 7.900000
-- ::37.969 ModelBenchmark[:] 5.332200
-- ::37.969 ModelBenchmark[:]

不难看出,对字符串的过滤非常灵活,因此我们应该使用这种方法来过滤字符串。

NSCharacter​Set 使用说明的更多相关文章

  1. Atitit.项目修改补丁打包工具 使用说明

    Atitit.项目修改补丁打包工具 使用说明 1.1. 打包工具已经在群里面.打包工具.bat1 1.2. 使用方法:放在项目主目录下,执行即可1 1.3. 打包工具的原理以及要打包的项目列表1 1. ...

  2. awk使用说明

    原文地址:http://www.cnblogs.com/verrion/p/awk_usage.html Awk使用说明 运维必须掌握的三剑客工具:grep(文件内容过滤器),sed(数据流处理器), ...

  3. “我爱背单词”beta版发布与使用说明

    我爱背单词BETA版本发布 第二轮迭代终于画上圆满句号,我们的“我爱背单词”beta版本已经发布. Beta版本说明 项目名称 我爱背单词 版本 Beta版 团队名称 北京航空航天大学计算机学院  拒 ...

  4. Oracle 中 union 和union all 的简单使用说明

    1.刚刚工作不久,经常接触oracle,但是对oracle很多东西都不是很熟.今天我们来了解一下union和union all的简单使用说明.Union(union all): 指令的目的是将两个 S ...

  5. Map工具系列-02-数据迁移工具使用说明

    所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...

  6. Map工具系列-03-代码生成BySQl工具使用说明

    所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...

  7. jQuery验证控件jquery.validate.js使用说明

    官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...

  8. gdbsever 使用说明

    gdbsever 使用说明 在新塘N3292x平台下 编译 gdbsever ./configure --target=arm-linux --host=arm-linux arm-linux-gdb ...

  9. mongoVUE的增删改查操作使用说明

    mongoVUE的增删改查操作使用说明 一. 查询 1. 精确查询 1)右键点击集合名,再左键点击Find 或者直接点击工具栏上的Find 2)查询界面,包括四个区域 {Find}区,查询条件格式{& ...

随机推荐

  1. ABP文档 - Javascript Api - AJAX

    本节内容: AJAX操作相关问题 ABP的方式 AJAX 返回信息 处理错误 HTTP 状态码 WrapResult和DontWrapResult特性 Asp.net Mvc 控制器 Asp.net ...

  2. 【翻译】MongoDB指南/CRUD操作(四)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...

  3. lua 学习笔记(1)

    一.lua函数赋值与函数调用         在lua中函数名也是作为一种变量出现的,即函数和所有其他值一样都是匿名的,当要使用某个函数时,需要将该函数赋值给一个变量,这样在函数块的其他地方就可以通过 ...

  4. 理解nodejs模块的scope

    描述 原文档地址:https://docs.npmjs.com/misc/scope 所有npm模块都有name,有的模块的name还有scope.scope的命名规则和name差不多,同样不能有ur ...

  5. 游戏AI系列内容 咋样才能做个有意思的AI呢

    游戏AI系列内容 咋样才能做个有意思的AI呢 写在前面的话 怪物AI怎么才能做的比较有意思.其实这个命题有点大,我作为一个仅仅进入游戏行业两年接触怪物AI还不到一年的程序员来说,来谈这个话题,我想我是 ...

  6. 【干货分享】流程DEMO-外出申请

    流程名: 外出申请  流程相关文件: 流程包.xml  流程说明: 直接导入流程包文件,即可使用本流程  表单:   流程: 图片:2.png DEMO包下载: http://files.cnblog ...

  7. 编译器开发系列--Ocelot语言1.抽象语法树

    从今天开始研究开发自己的编程语言Ocelot,从<自制编译器>出发,然后再自己不断完善功能并优化. 编译器前端简单,就不深入研究了,直接用现成的一款工具叫JavaCC,它可以生成抽象语法树 ...

  8. 项目持续集成环境(jenkins + SVN + maven + tomcat)

    整体流程 每次SVN上代码有变动,触发自动构建动作,并部署到服务器的tomcat上,具体流程: 1.SVN上提交代码修改 2.maven执行Goals 3.将web工程打成war包 4.关闭服务器的t ...

  9. DockerCon 2016 – 微软带来了什么?

    根据Forrester的调查,接近半数的企业CIO在考虑IT架构的时候更乐于接受开源方案,这主要是基于低成本,避免供应商锁定和敏捷的需求:同时另外一家North Bridge的调研机构的调查显示,20 ...

  10. MongoDB学习笔记~对集合属性的操作

    回到目录 $unset清除元素 请注意在单个数组元素上使用$unset的结果可能与你设想的不一样.其结果只是将元素的值设置为null,而非删除整个元素.要想彻底删除某个数组元素,可以用$pull 和$ ...