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

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

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

  1. void dumpCharacterSet( NSString *name )
  2. {
  3. unichar idx;
  4. NSCharacterSet *cset = [NSCharacterSet performSelector: NSSelectorFromString(name)];
  5.  
  6. printf("Character set (0-127): %s\n7-Bit: ", [name UTF8String]);
  7.  
  8. for( idx = ; idx < ; idx++ )
  9. {
  10. if ( == idx ) {
  11. printf( "\n8-Bit: " );
  12. }
  13.  
  14. //Returns a Boolean value that indicates whether a given character is in the receiver.
  15. if ([cset characterIsMember: idx])
  16. {
  17. //判断字符c是否为可打印字符(含空格)
  18. if ( isprint(idx) ) {
  19. printf( "%c ", idx);
  20. }
  21. else {
  22. printf( "%02x ", idx);
  23. }
  24. }
  25. }
  26. printf("\n\n");
  27. }
  1. // Reference output...
  2. dumpCharacterSet( @"alphanumericCharacterSet" );
  3. dumpCharacterSet( @"controlCharacterSet" );
  4. dumpCharacterSet( @"decimalDigitCharacterSet" );
  5. dumpCharacterSet( @"decomposableCharacterSet" );
  6. dumpCharacterSet( @"illegalCharacterSet" );
  7. dumpCharacterSet( @"letterCharacterSet" );
  8. dumpCharacterSet( @"lowercaseLetterCharacterSet" );
  9. dumpCharacterSet( @"nonBaseCharacterSet" );
  10. dumpCharacterSet( @"punctuationCharacterSet" );
  11. dumpCharacterSet( @"uppercaseLetterCharacterSet" );
  12. dumpCharacterSet( @"whitespaceAndNewlineCharacterSet" );
  13. dumpCharacterSet( @"whitespaceCharacterSet" );

打印结果如下

  1. Character set (-): alphanumericCharacterSet
  2. -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
  3. -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
  4.  
  5. Character set (-): controlCharacterSet
  6. -Bit: 0a 0b 0c 0d 0e 0f 1a 1b 1c 1d 1e 1f 7f
  7. -Bit: 8a 8b 8c 8d 8e 8f 9a 9b 9c 9d 9e 9f ad
  8.  
  9. Character set (-): decimalDigitCharacterSet
  10. -Bit:
  11. -Bit:
  12.  
  13. Character set (-): decomposableCharacterSet
  14. -Bit:
  15. -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
  16.  
  17. Character set (-): illegalCharacterSet
  18. -Bit:
  19. -Bit:
  20.  
  21. Character set (-): letterCharacterSet
  22. -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
  23. -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
  24.  
  25. Character set (-): lowercaseLetterCharacterSet
  26. -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
  27. -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
  28.  
  29. Character set (-): nonBaseCharacterSet
  30. -Bit:
  31. -Bit:
  32.  
  33. Character set (-): punctuationCharacterSet
  34. -Bit: ! " # % & ' ( ) * , - . / : ; ? @ [ \ ] _ { }
  35. -Bit: a1 a7 ab b6 b7 bb bf
  36.  
  37. Character set (-): uppercaseLetterCharacterSet
  38. -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
  39. -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
  40.  
  41. Character set (-): whitespaceAndNewlineCharacterSet
  42. -Bit: 0a 0b 0c 0d
  43. -Bit: a0
  44.  
  45. Character set (-): whitespaceCharacterSet
  46. -Bit:
  47. -Bit: a0

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

下边再说一下如何过滤的

  1. // Set up for reading testString
  2. 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;";
  3. // Parse CSV with NSScanner
  4. NSScanner *myScanner = [NSScanner scannerWithString:testString];
  5.  
  6. NSString *location;
  7. float theRevenue;
  8. float thePercent;
  9. int theRank;
  10.  
  11. // Set up data delimiter using semicolon//分号
  12.  
  13. NSCharacterSet *CharacterSet;
  14.  
  15. //Returns a character set containing the characters in a given string.
  16. CharacterSet = [NSCharacterSet characterSetWithCharactersInString:@";,"];
  17.  
  18. // Double check scanner string
  19. NSLog (@"Scanner string\n");
  20.  
  21. //Returns the string with which the receiver was created or initialized.
  22. NSLog (@"%@",[myScanner string]);
  23.  
  24. // scanner loop start
  25. while ([myScanner isAtEnd] == NO) {
  26.  
  27. if ( [myScanner scanUpToCharactersFromSet:CharacterSet intoString:&location] ) {
  28. NSLog (@"%@",location);
  29. }
  30.  
  31. // Skipping the ; and ,delimiter
  32. if([myScanner scanString:@";" intoString:NULL] || [myScanner scanString:@"," intoString:NULL])
  33. ;
  34. // Read Revenue data up to ; delimiter and skipping
  35. //Scans for a float value, returning a found value by reference.
  36. if([myScanner scanFloat:&theRevenue])
  37. NSLog(@"%lf",theRevenue);
  38. if([myScanner scanString:@";" intoString:NULL] || [myScanner scanString:@"," intoString:NULL])
  39. ;
  40.  
  41. // Read Percentage data up to ; delimiter and skipping
  42. if([myScanner scanFloat:&thePercent])
  43. NSLog(@"%lf",thePercent);
  44. if([myScanner scanString:@";" intoString:NULL] || [myScanner scanString:@"," intoString:NULL])
  45. ;
  46.  
  47. // Read Ranking data up to ; delimiter and skipping
  48. if([myScanner scanInt:&theRank])
  49. NSLog(@"%i",theRank);
  50. if([myScanner scanString:@";" intoString:NULL] || [myScanner scanString:@"," intoString:NULL])
  51. ;
  52. }

打印结果如下

  1. -- ::37.967 ModelBenchmark[:] Los Angeles
  2. -- ::37.967 ModelBenchmark[:] 8.250000
  3. -- ::37.967 ModelBenchmark[:] 0.580562
  4. -- ::37.968 ModelBenchmark[:]
  5. -- ::37.968 ModelBenchmark[:] Tokyo
  6. -- ::37.968 ModelBenchmark[:] 1.900000
  7. -- ::37.968 ModelBenchmark[:] 0.643872
  8. -- ::37.968 ModelBenchmark[:]
  9. -- ::37.968 ModelBenchmark[:] Honolulu
  10. -- ::37.968 ModelBenchmark[:] 0.000000
  11. -- ::37.968 ModelBenchmark[:] 0.000000
  12. -- ::37.968 ModelBenchmark[:]
  13. -- ::37.968 ModelBenchmark[:] Toronto
  14. -- ::37.968 ModelBenchmark[:] 7.900000
  15. -- ::37.969 ModelBenchmark[:] 5.332200
  16. -- ::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. .NET Core 系列5 :使用 Nuget打包类库

    NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系, ...

  2. C语言 · 查找整数 · 基础练习

    问题描述 给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个. 输入格式 第一行包含一个整数n. 第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000. 第三行包含一个 ...

  3. Js 变量声明提升和函数声明提升

    Js代码分为两个阶段:编译阶段和执行阶段 Js代码的编译阶段会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作用域的核心内容 包括变量声明(var a)和函数声明(function a(){ ...

  4. .NET Core的日志[1]:采用统一的模式记录日志

    记录各种级别的日志是所有应用不可或缺的功能.关于日志记录的实现,我们有太多第三方框架可供选择,比如Log4Net.NLog.Loggr和Serilog 等,当然我们还可以选择微软原生的诊断框架(相关A ...

  5. 主成分分析(PCA)原理总结

    主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一.在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用.一般我们提到降维最容易想到的算法就 ...

  6. mybatis_个人总结

    在使用mybatis框架开发数据访问层的过程中,我在这段时间遇到很多细节问题困住我,在这里我来分享一下我遇到的坑,希望能帮到大家. 一.mybatis动态代理方式开发的规范: 1.注意在mybatis ...

  7. PHP获取客户端IP

    /** * 获取客户端IP */ function getClientIp() { $ip = 'unknown'; $unknown = 'unknown'; if (isset($_SERVER[ ...

  8. C#——传值参数(1)

    //我的C#是跟着猛哥(刘铁猛)(算是我的正式老师)<C#语言入门详解>学习的,微信上猛哥也给我讲解了一些不懂得地方,对于我来说简直是一笔巨额财富,难得良师! 这次与大家一起学习C#中的值 ...

  9. 【干货分享】流程DEMO-合同会审表

    流程名: 合同会审表  业务描述: 合同的审批及签订  流程相关文件: 流程包.xml 事务呈批表业务服务.xml 事务呈批表主数据.xml  流程说明: 1.此流程必须先进行事务呈批表流程的配置才可 ...

  10. Web安全开发之验证码设计不当引发的撞库问题

    感谢某电商平台安全工程师feiyu跟我一起讨论这个漏洞的修复.以往在安全测试的过程中后台经常存在验证码不失效果造成的撞库问题,甚至在一些银行或者电商的登录与查存页面同样存在这个问题,一旦造成撞库无论对 ...