OC-NSStr***

==========================

面向对象编程进阶和字符串

==========================

Δ一.类的设计模式—单例

【单例】程序允许过程中,有且仅有一块内存空间存在,这种类的设计模式成为单例

【问】什么时候用到单例

【答】数据共享的时候

&*bsp;

以Apple为例:

+ (Apple *)share

{

stat*c Apple * a = **l;

stat*c d*spatch_o*ce_t o*ceToke*;

d*spatch_o*ce(&o*ceToke*,^{

a = [[Apple alloc] ***t];

});

retur* a;

}

&*bsp;&*bsp;

1.单例的书写格式

以+(加号)开头的方法,可以直接被类调用;-(减号)开头方法 ,是对象方法,用对象来调用;

&*bsp;&*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;

1&*t;

&*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;

9&*t;

&*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;

&*bsp;

原文地址:https://www.cnblogs.com/GJ-ios/p/5282345.html