01.#import <Foundation/Foundation.h>
02.
03.int compareCharIgnoreCase(char c1,char c2)
04.{
05. int flag = 0;
06. if(c1==c2) flag=1;
07. else if (c1>='A'&&c1<='Z')
08. flag=(c1+'a'-'A'==c2);
09. else if(c1>='a'&&c1<='z')
10. flag=(c1+'A'-'a'==c2);
11.
12. return flag;
13.}
14.
15.@interface NSString (Equal) // 利用分类给系统自带类添加方法,()中的分类名一般用模块名称
16.
17.
18.-(BOOL)equalsIgnoreCase:(NSString *)str;
19.
20.@end
21.
22.@implementation NSString (Equal)
23.
24.
25.-(BOOL)equalsIgnoreCase:(NSString *)str
26.{
27. BOOL b = 0;
28. int selfLength=[self length];
29. int strLength=[str length];
30. int i;
31. unichar c1,c2;
32. if(b=(selfLength==strLength))
33. {
34. for(i=0;i<selfLength&&b;i++)
35. {
36. c1=[self characterAtIndex:i];
37. c2=[str characterAtIndex:i];
38. b=compareCharIgnoreCase(c1,c2);
39. }
40. }
41.
42. return b;
43.}
44.@end
45.
46.
47.
48.
49.int main()
50.{
51. NSString *str = @"1231EA21ee1123";
52. NSLog(@"%d",[str equalsIgnoreCase:@"1231ea21EE1123"]);
53.
54. return 0 ;
55.}
56.
57.
58./*
59.
60.category:(不改变类的情况下,为类新增方法)
61. 1>分类只能增加方法(对象方法和类方法)
62. 2>分类可以访问类中成员
63. 3>调用方法优先查找分类,即分类方法跟类中相同时,会覆盖类中方法
64. 4>多个分类中都实现了相同的方法,按照编译顺序,后编译的会覆盖先编译的分类中的方法
|
|