main.m
//
// main.m
// 利用分类实现功能
//
// Created by yaomars on 16/4/27.
// Copyright © 2016年 yaomars. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "NSString+Extensions.h" //这个分类就是非正式协议!!!
//利用分类实现以下两个功能:(1)字符串的反转。(2)计算字符串中英文字母的个数
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 分析: 根据这两个功能,确定为NSString这个类添加分类
// 1.字符串的反转功能
NSString *str = @"abc12de3f";
str = [str rollbackString];
NSLog(@"字符串的反转后为: %@",str);
// 2.计算字符串中英文字母的个数
NSUInteger count = [str countNumberOfCharacter];
NSLog(@"字符串中英文字母的个数: %lu",count);
}
return 0;
}
NSString+Extensions.h
//
// NSString+Extensions.h
// HM笔试总结
//
// Created by yaomars on 16/4/27.
// Copyright © 2016年 yaomars. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSString (Extensions)
// 1.字符串的反转功能
-(NSString *)rollbackString;
// 2.计算字符串中英文字母的个数
-(NSUInteger)countNumberOfCharacter;
@end
NSString+Extensions.m
//
// NSString+Extensions.m
// HM笔试总结
//
// Created by yaomars on 16/4/27.
// Copyright © 2016年 yaomars. All rights reserved.
//
#import "NSString+Extensions.h"
@implementation NSString (Extensions)
-(NSString *)rollbackString{
NSMutableString *strM = [NSMutableString string];
for (int i=(int)self.length-1; i >= 0; i--) {
NSString *temp = [self substringWithRange:NSMakeRange(i, 1)];
[strM appendString:temp];
}
return strM; //返回的是一个可变的字符串 会进行自动转换??
}
-(NSUInteger)countNumberOfCharacter{
NSUInteger count = 0;
for (int i=0; i<self.length; i++) {
unichar ch = [self characterAtIndex:i];
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
count ++;
}
}
return count;
}
@end