/******************* NSString+NumCount.h文件 ******************************/

#import <Foundation/Foundation.h>

@interface NSString (NumCount)

// 给NSString类扩充一个类方法计算字符串中数字的个数
+ (int)numberOfString:(NSString *)str; // 给NSString类扩充一个对象方法计算字符串中数字的个数
- (int)numberCount; @end /******************* NSString+NumCount.m文件 ******************************/ #import "NSString+NumCount.h" @implementation NSString (NumCount) // 给NSString类扩充一个类方法计算字符串中数字的个数
+ (int)numberOfString:(NSString *)str
{
return [str numberCount];
} // 给NSString类扩充一个对象方法计算字符串中数字的个数
// 在实际开发中主要是给系统自带的类写分类,在实现的时候注意要么使用类方法要么使用对象方法,以面向对象的思想去实现分类的话推荐对象方法
- (int)numberCount
{
int count = ; for (int i = ; i < self.length; i++) {
// 返回当前索引i处的字符
unichar c = [self characterAtIndex:i];
// 筛选字符在0和9之间的 当然也可以直接用阿斯科码值来判断 因为字符在内存中就是以阿斯科码值来存储的
if (c >= '' && c <= '') { // 可以这样写 c> = 48 && c <= 57
count++;
}
}
return count;
}
@end /*********************** main.m文件 **********************************/
#import <Foundation/Foundation.h>
#import "NSString+NumCount.h"
int main(int argc, const char * argv[])
{
NSString *str = @"45adsfad678sakjdhfkjahskdhf"; int count1 = [str numberCount]; NSLog(@"%d",count1); int count2 = [NSString numberOfString:@"sjdfl9ashdf234234ja"]; NSLog(@"%d",count2); return ;
}

常见的字符对应的阿斯科码表:

iOS 分类思想(2)的更多相关文章

  1. iOS 分类思想(1)

    1.需求:如果对一个类在不更改代码的基础上要为它再扩充额外的方法可以使用继承和分类 2.分类 作用:可以在不修改原来类代码的基础上,给某一个类扩充一些对象方法或者类方法,因此一个类可以有多个分类 实现 ...

  2. iOS分类、延展和子类的区别

    iOS分类.延展和子类的区别 类别.延展.子类的区别   类别 延展 子类 功能 为类添加方法,不用知道类的源码,添加变量(通过运行时,具体参考下面注解) 为类添加私有变量和私有方法,在类的源文件中书 ...

  3. iOS分类底层实现原理小记

    摘要:iOS分类底层是怎么实现的?本文将分如下四个模块进行探究分类的结构体编译时的分类分类的加载总结本文使用的runtime源码版本是objc4-680文中类与分类代码如下//类@interfaceP ...

  4. IOS编程思想

    从今天起想走进IOS架构的大门,一直不屑于学习第三方框架,觉得框架也是一点点代码给垒起来的,只要掌握了代码就可以了,殊不知垒代码的过程才是最重要的,而这个过程又岂是一朝一夕就能达到完美境界的,达到完美 ...

  5. iOS 分类和继承

    iOS 中分类(Categories) 和 继承(Inherit)有相同的功能,但在一些细节上又有差异,简单介绍一下两者的异同. 分类可以在不知道系统类源代码的情况下,为这个类添加新的方法.分类只能用 ...

  6. iOS分类

    ios中的分类其实就是把两个类用两个或多个文件写的,,在平时的开发中我们会发现有的时候我们想要一个类多个什么功能  但是已经定义好的类中没有,,我们又不想更改我们的程序  那么现在的这种情况下我就可以 ...

  7. HUST 1698 - 电影院 组合数学 + 分类思想

    http://acm.hust.edu.cn/problem/show/1698 题目就是要把一个数n分成4段,其中中间两段一定要是奇数. 问有多少种情况. 分类, 奇数 + 奇数 + 奇数 + 奇数 ...

  8. iOS 编程思想

    一 面向过程编程: 处理事情以过程为核心,一步一步的实现 二 面向对象编程: 万物皆对象 三 链式编程思想: 将多个操作通过点链接在一起成为一句代码 特点:方法返回值是Block,block必须有一个 ...

  9. ios 分类(Category)

      今天研究了类别,都是网上找的资料,类别的作用 类别主要有3个作用:       (1)将类的实现分散到多个不同文件或多个不同框架中.       (2)创建对私有方法的前向引用.       (3 ...

随机推荐

  1. 【55】让自己熟悉Boost

    1.网址:http://boost.org 2.有很多C++组织和网站,但是Boost库有两个优势:a.和标准委员会关系密切:b.加入C++标准的各种功能的测试场.

  2. protocol buffer的简单使用

    protocol buffer是一个高效的结构化数据存储格式,用来结构化数据的序列化与反序列化.目前支持java.c++.Python 相对于json而言: 数据量跟小 其他的还没看出什么优势 下载地 ...

  3. Android GridView 添加 网格线解决办法

    在使用 GridView 网格布局时,默认情况下 GridView  是没有网格线的,但是有些时候我们需要让GridView显示分割线,怎么办呢?查了不少资料,找到了一种为GridView添加网格线的 ...

  4. Linux服务器的常用备份方法

    系统备份是系统管理工作中十分重要的一个环切,本文详细介绍了各种Linux系统的备份方法,相信对大家的日常管理工作有所帮助. 备份是一项重要的工作,但是很多人没有去做.一旦由于使用不当造成数据丢失,备份 ...

  5. Java基础知识强化之多线程笔记03:进程与线程 和 多线程的意义

    1. 要想了解多线程,必须先了解线程,而要想了解线程,必须先了解进程,因为线程是依赖于进程而存在. 2. 什么是进程? 通过任务管理器我们就看到了进程的存在. 而通过观察,我们发现只有运行的程序才会出 ...

  6. MySQL(3):数据库操作

    1.创建数据库: 数据定义语言(DDL): create database db_name[数据库选项] 注:数据库命名规则:大小写取决于当前操作系统,见名知意,推荐下划线 标识符的字符: 使用任意字 ...

  7. focus on these tools

    http://www.oschina.net/p/dubbo http://www.blogjava.net/hispark/archive/2008/12/01/243310.html http:/ ...

  8. PHP Fatal error: Cannot pass parameter 2 by reference

    PHP Fatal error:  Cannot pass parameter 2 by reference in 这个错误的意思是:不能按引用传递第2个参数 我的理解是: 方法的第2个参数 需要传递 ...

  9. 在重命名SqlServer数据库是,报5030错误的解决办法

    数据库不能重名名5030的错误,其实很简单原因就是有应用程序正在占用这个连接,使用这样一行命令就可以查询出正在占用的连接 use master select spid from master.dbo. ...

  10. css3边框、阴影

    一.图像边框border-image 语法:border-image:border-image-source(图片)  ||  border-image-slice(裁剪位置)  ||  border ...