==========================
面向对象编程进阶和字符串
==========================
Δ一.类的设计模式—单例
【单例】程序允许过程中,有且仅有一块内存空间存在,这种类的设计模式成为单例
【问】什么时候用到单例
【答】数据共享的时候
&*bsp;
+ (Apple *)share
{
});
}
&*bsp;&*bsp;
1.单例的书写格式
以+(加号)开头的方法,可以直接被类调用;-(减号)开头方法 ,是对象方法,用对象来调用;
&*bsp;
【注】单例方法名字随便起,但是尽量保证见名知意!
&*bsp;
====================
字符串
====================
&*bsp;
一.认识oc中的字符串
oc中以 @“” 包含的内容,是字符串;无论@“”包含了字符串的长度为多少。
【例如】:@“a”,@“123”,@“_%^&*”,
【注】c语言中字符串是用“”,oc中是用@“”
&*bsp;
NSStr***
【见strDemo1】
&*bsp;
//声明了一个类型为NSStr*** 的字符串str
&*bsp; &*bsp; &*bsp; &*bsp; //NSStr*** 是一个类的类型,用法跟基础类型一样
&*bsp; &*bsp; &*bsp; &*bsp; //NSStr*** 这个类是苹果公司封装好的一个字符串类
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; //定义了一个str 这个对象变量,给赋初始值为@"hello world!"
&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** str = @"hello world!";
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; //c字符串
//&*bsp; &*bsp; &*bsp; &*bsp; char a[64]="hello";
//&*bsp; &*bsp; &*bsp; &*bsp; a[0],a[1]...
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
//&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** str1 = [[NSStr*** alloc]***tW*thFormat:@"%@",str];
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
//&*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"%@",str1);
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; //求字符串长度 --- le**th
&*bsp; &*bsp; &*bsp; &*bsp; //oc中 常用**t类型,NSUI*te*er不常用
&*bsp;
/**************************************************************************************/
&*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; NSUI*te*er le**th = [str le**th];
&*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"%ld",le**th);
&*bsp;
&*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; 2&*t;
&*bsp; &*bsp; &*bsp; &*bsp; //∆万能拼接字符串
&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** Str1 = @"yudeju*";
&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** Str2 = @"x*j**p***";
&*bsp;
&*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; 3&*t;
&*bsp; &*bsp; &*bsp; &*bsp; //oc 中 字符串的格式转化符是:%@
&*bsp; &*bsp; &*bsp; &*bsp; //编译器在碰到格式化转化符的时候,会自动替换成后面参数所对应的变量值
&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** Str3 = [NSStr*** str***W*thFormat:@"%@ a*d %@",Str1,Str2];
&*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"%@",Str3);
&*bsp;
&*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; 4&*t;
例如:
&*bsp; &*bsp; &*bsp; &*bsp; //请拼接2个字符串,第一个字符串内容为@“你好”,第二个字符串为@“中国”;拼接完成之后打印出长度
&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** str4 = @"你好";
&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** str5 = @"中国";
&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** str6 = [NSStr*** str***W*thFormat:@"%@%@",str4,str5];
&*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"%ld",[str6 le**th]);
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; 5&*t;
&*bsp; &*bsp; &*bsp; &*bsp; //字符串的转化
&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** StrI*t = @"123456789987654321";
&*bsp; &*bsp; &*bsp; &*bsp; **t a = [StrI*t **tValue];
&*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"%d",a);
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; lo** lo** b = [StrI*t lo**Lo**Value];
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; //@“0.1234”
&*bsp; &*bsp; &*bsp; &*bsp; //NSStr**** StrFloat = @"0.1234";
&*bsp; &*bsp; &*bsp; &*bsp; float c = [@"0.1234" floatValue];
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; //练习 : 计算@“1234” @“0.25” @“199” @“0.5” 这四个数的值,并打印出来
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; 6&*t;
&*bsp; &*bsp; &*bsp; &*bsp; //字符串分割
&*bsp; &*bsp; &*bsp; &*bsp; //【注】字符串分割要在字符串有效长度范围内
&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** tempStr = @"helloworld";
//&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** FStr = [tempStr substr***FromI*dex:5];
//&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** FStr = [tempStr substr***ToI*dex:5];
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; NSRa**e ra**e = {2,3};
&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** FStr = [tempStr substr***W*thRa**e:ra**e];
&*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"%@",FStr);
&*bsp;
&*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; 7&*t;
&*bsp; &*bsp; &*bsp; &*bsp; //字符串的比较
&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** tem1 = @"abc";
&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** tem2 = @"abc";
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; //判断tem1 是否等于 tem2
&*bsp; &*bsp; &*bsp; &*bsp; *f ([tem1 *sEqualToStr***:tem2]) {
&*bsp; &*bsp; &*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"相等");
&*bsp; &*bsp; &*bsp; &*bsp; }
&*bsp; &*bsp; &*bsp; &*bsp; else
&*bsp; &*bsp; &*bsp; &*bsp; {
&*bsp; &*bsp; &*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"不相等");
&*bsp; &*bsp; &*bsp; &*bsp; }
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; NSCompar*so*Result result = [tem1 compare:tem2];
&*bsp; &*bsp; &*bsp; &*bsp; *f (result == NSOrderedAsce*d***) {
&*bsp; &*bsp; &*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"tem2 &*t; tem1");
&*bsp; &*bsp; &*bsp; &*bsp; }
&*bsp; &*bsp; &*bsp; &*bsp; else *f (result == NSOrderedDesce*d***)
&*bsp; &*bsp; &*bsp; &*bsp; {
&*bsp; &*bsp; &*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"tem2 < tem1");
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; }else *f (result == NSOrderedSame)
&*bsp; &*bsp; &*bsp; &*bsp; {
&*bsp; &*bsp; &*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"tm2 == tem1");
&*bsp; &*bsp; &*bsp; &*bsp; }
&*bsp;
&*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; 8&*t;
&*bsp; &*bsp; &*bsp; &*bsp; //BOOL 读作布尔类型,只有2种状态,真或者假,可以用1、0也可以用yes 、*o
&*bsp; &*bsp; &*bsp; &*bsp; //字符串前缀和后缀判断
&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** str*** = @"http://www.ba*du.com";
&*bsp; &*bsp; &*bsp; &*bsp; BOOL have = [str*** has*ref*x:@"http://"];
&*bsp; &*bsp; &*bsp; &*bsp; *f (have == YES) {
&*bsp; &*bsp; &*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"是http://开头");
&*bsp; &*bsp; &*bsp; &*bsp; }
&*bsp; &*bsp; &*bsp; &*bsp; else
&*bsp; &*bsp; &*bsp; &*bsp; {
&*bsp; &*bsp; &*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"不是http://开头");
&*bsp; &*bsp; &*bsp; &*bsp; }
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; BOOL havej*ewe* = [str*** hasSuff*x:@"com"];
&*bsp; &*bsp; &*bsp; &*bsp; *f (havej*ewe*) {
&*bsp; &*bsp; &*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"是com结尾");
&*bsp; &*bsp; &*bsp; &*bsp; }
&*bsp; &*bsp; &*bsp; &*bsp; else
&*bsp; &*bsp; &*bsp; &*bsp; {
&*bsp; &*bsp; &*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"不是com结尾");
&*bsp; &*bsp; &*bsp; &*bsp; }
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; //转成大写
&*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"%@",[str*** uppercaseStr***]);
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; //转成小写
&*bsp; &*bsp; &*bsp; &*bsp; [str*** lowercaseStr***];
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; //所有单词首字母大写
&*bsp; &*bsp; &*bsp; &*bsp; [str*** cap*tal*zedStr***];
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; //查找字符串中的某个字符串,进行替换,第一个参数是要查找的字符串,第二个字符串为需要替换成的字符串
&*bsp; &*bsp; &*bsp; &*bsp; str*** = [str*** str***ByReplac***Occurre*cesOfStr***:@"www" w*thStr***:@"*oo*l"];
&*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"%@",str***);
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; NSStr**** tmp = @"cesh*shuju";
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; //=========================================
&*bsp; &*bsp; &*bsp; &*bsp; NSMutableStr**** m_str = [[NSMutableStr*** alloc]***tW*thStr***:tmp];
&*bsp; &*bsp; &*bsp; &*bsp; //字符串的修改
&*bsp; &*bsp; &*bsp; &*bsp; [m_str setStr***:@"hello world"];
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; //字符串的追加
&*bsp; &*bsp; &*bsp; &*bsp; [m_str appe*dFormat:@" **hao"];
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; //字符串的删除
&*bsp; &*bsp; &*bsp; &*bsp; NSRa**e ra** = {1,2};
&*bsp; &*bsp; &*bsp; &*bsp; [m_str deleteCharactersI*Ra**e:ra**];
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; //字符串的插入
&*bsp; &*bsp; &*bsp; &*bsp; [m_str **sertStr***:@"x*j**p***" atI*dex:3];
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; NSLo*(@"%@",m_str);
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
&*bsp; &*bsp; &*bsp; &*bsp; //∆以NSMutable开头的都是可变类型,以NSMutable开头定义的对象都是可以对数据进行修改;
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
//&*bsp; &*bsp; &*bsp; &*bsp; NSStr*** //不可变字符串
//&*bsp; &*bsp; &*bsp; &*bsp; NSMutableStr***//可变字符串
//&*bsp; &*bsp; &*bsp; &*bsp; NSArray// 不可变数组
//&*bsp; &*bsp; &*bsp; &*bsp; NSMutableArray//可变数组
&*bsp;&*bsp; &*bsp; &*bsp; &*bsp;
//&*bsp; &*bsp; &*bsp; &*bsp; NSD*ct*o*ary//不可变字典
//&*bsp; &*bsp; &*bsp; &*bsp; NSMutableD*ct*o*ary//可变字典
&*bsp;//可变的意思是可以对这个类型定义的变量进行修改或者删除操作
&*bsp;