OC 的基本数据类型
NSInteger 在64位下相当于long, 在非64位相当于int
CGFloat 在64位下相当于double,在非64位相当于float
/*
* Inherits from 继承自哪几个类
* conform to 遵循哪个协议
* framework 这个类定义在哪个框架下
* Availability 从iOS哪个版本开始支持使用这个类
* Decleard in 声明在哪个头文件中
* Sample code 示例代码
* Guides 相关指南
*/
NSString 是一个字符串类,而且是一个不可变的字符串,继承自NSObject,用NSString创建出来的字符串对象一经创建就不能修改
OC中如何创建字符串
NSString *str = @“lanou”;
// 创建空字符串
NSString *str1 = [[NSString alloc]init];
NSLog(@"内容:%@ 地址: %p",str1,str1); // 打印的内容为空
str1 = @"nihao";
// 这种改变只是指针的重指向
NSLog(@"内容:%@ 地址: %p",str1,str1);
NSString *str2 = [NSString string];
NSLog(@"===%@",str2);
// 创建不可变空字符串是没有任何意义的
// ************************************************************************ //
// 利用 initWithFormat 将多个不可变字符串拼接为一个字符串
NSString *str3 = [[NSString alloc]initWithFormat:@“%@ %@“,@“lanou”,@“i love you”];
NSLog(@“%@“,str3); //结果是:lanou i love you
NSString *str4 = [[NSString alloc]initWithFormat:@“我%@“,@“爱蓝欧”];
NSLog(@“%@“,str4); // 结果是:我爱蓝欧
// 练习:将电影上映日期2015-8-26 ~ 2015-9-26以字符串的形式创建出来
// 方式一
NSString * date = [[NSString alloc]initWithFormat:@”电影在%@ ~ %@期间上映”,@”2015.8.26”,@”2015.9.26”];
NSLog(@”%@”,date);
// 方式二
NSLog(@”电影在%@ ~ %@期间上映”,@”2015.8.26”,@”2015.9.26”);
// ************************************************************************ //
// 将C语言的字符串转换为OC的字符串:比如:”iOS” –> @”iOS”
NSString *str9 = [[NSString alloc] initWithUTF8String:"iOS"];
NSLog(@"%@",str9);
// ************************************************************************ //
// 将文件中的字符串内容读入到字符串对象中
// 第一个参数:文件的路径 // 下文中的是建立在桌面的TXT文本
// 第二个参数:编码的格式
// 第三个参数:如果出错,返回值存放的地方
// 分别是三个括号内的部分
NSString *str11 = [[NSStringalloc]initWithContentsOfFile:(@”/Users/laouhn/Desktop/Product/Homework/作业/LessonNSString-04-9-2/LessonNSString-04-9-2/xiang.txt”) encoding:(NSUTF8StringEncoding )error:(nil)];
NSLog(@”%@”,str11);
// ************************************************************************ //
// 操作字符串的方法
//计算字符串长度的方法
NSString *ss = @”lanou3g is good”;
NSUInteger len = [ss length];
NSLog(@”%lu”,len);2.// 返回字符串片段的方法
NSString *str13 =@”abcdefg”;
/*
typedef struct _NSRange{ //NSRange 是OC中结构体,结构体有个成员变量:location length
NSUInteger location; // 起始位置
NSUInteger length; // 从起始位置多长
}NSRange;
*/
NSLog(@”%lu”,str13.length); // 0~6
NSRange rang = {3,3};
NSString *subString = [str13 substringWithRange:rang];
NSLog(@”%@”,subString);
// 返回子串在父串中的范围
// 碰到第一对满足的停止
rang = [str13 rangeOfString:@“def”];
NSLog( @“location:%lu,length:%lu”,rang.location,rang.length);// 获取字符串的子串,以及字符串中的某个字符
NSString *all = @“lane is good”;
// 声明一个变量,范围变量
// 1. 定义范围的起点
// 2. 定义范围的长度
NSRange range = NSMakeRange(2,2);
// 声明一个变量用来指向获取的子串对象
NSString *subString = [all substringWithRange:range];
NSLog(@“subString: %@“,subString);// 获得从零位置都某个位置的字符串,不包含提供的位置字符(0~3)
NSString *str14 = [str13 substringToIndex:4];
NSLog(@“%@“,str14);//从某个位置开始获取字符串,直到父串的结尾,包含提供某个位置的字符
NSString *str15 = [str13 substringFromIndex:4];
NSLog(@“%@“,str15);// 返回格式拼接的字符串
NSString *str16 = [str14 stringByAppendingFormat:@“%@“,str15];
NSLog(@“%@“,str16);
// 练习3:把@“苍老师”后拼接上@“是你们的”
NSString *cangString = @”苍老师”;
NSString *newString = [cangString stringByAppendingFormat:@”%@%@”,@”是你们的.”,@”不,殷俊的”]; // 前面的cangString是命令发送的对象,不会发生变化
NSLog(@”%@”,newString);
NSString *str17 = [cangString stringByAppendingString:@”是世界的”];
// string后字符串不能有多个,注意 String 和 Format 的区别
NSLog(@”%@”,str17);
// 字符串的替换
// 将目标子串从父串中用我们给定的字符串替换掉
NSString *str18 = [str17 stringByReplacingOccurrencesOfString:@“苍老师”,withString:@“波多”];
NSLog(@“%@“,str18);- // 判断一个字符串是否具有某个前缀或者后缀
NSString *str19 = @”中国北京中南海”;
BOOL isHas = [str19 hasPrefix:@”中国北京”];
NSLog(@”%@”,isHas ?@”有这个前缀”:@”没有这个前缀”);
isHas = [str19 hasSuffix:@”地区”];
NSLog(@”%@”,isHas ?@”有这个后缀”:@”没有这个后缀”);
//练习: 判断字符串@”陈冠希”是否有.jpg,如果没有给他拼接上.jpg,如果有.jpg,将.jpg替换为.png
NSString *str20 = @”陈冠希.jpg” ;
NSString *newCString = nil; //定义一个空的字符串来接接收
BOOL picture = [str20 hasSuffix:@".jpg"];
if (0 == picture) {
newCString = [str20 stringByAppendingString:@".jpg"];
}
else{
newCString = [str20 stringByReplacingOccurrencesOfString:@".jpg" withString:@".png"];
}
NSLog(@"%@",newCString);
- // OC中判断两个字符串是否相等的办法
NSString *s = @“你好蓝鸥”;
NSString *s1 = @“蓝鸥你好”;
BOOL isEqual = [s isEqualToString:s1];
NSLog(@“%@“,isEqual ? @“相等” : @“不相等”);
10 . // 比较两个字符串的大小
NSString *sStr2 = @“NBA”;
NSString *sStr3 = @“NBA”;
/*
typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
NSOrderedAscending 升序,前一个字符串小于后一个字符串
NSOrderedSame 相等
NSOrderedDescending 降序,前一个字符串大于后一个字符串
*/
NSInteger n = [sStr2 compare:sStr3];
switch(n) {
case NSOrderedAscending:
NSLog (@“%@ < %@“,sStr2,sStr3);
break;
case NSOrderdSame:
NSLog(@“%@ == %@“,sStr2,sStr3);
break;
case NSOrderedDescending:
NSLog(@“%@ > %@“,sStr2,sStr3);
break;
default:
break;
}
// 不区分大小写的比较方式
n = [sStr2 caseInsensitiveCompare:sStr3];
NSLog(@“%@“,n);
// ************************************************************************ //
// NSMutableString 是可变字符串,继承自NSString,所以,NSString所有的办法NSMutableString 都可以调用
//这种创建字符串的形式可以提高一定的效率,如果放入的字符串长度小于开辟的虚拟空间长度,则直接放入,免去了开辟空间的时间,如果字符串长度大于开辟的空间,则此时需要再开辟空间;
NSMutableString *mStr = [[NSMutableString alloc]initWithCapacity:10];
// 插入一个字符串
[mStr insertString:@“索宁” atIndex:10];
NSLog(@“%@“,mStr);
// 创建可变字符串的另一个形式
NSMutableString *mStr1 = [[NSMutableString alloc]initWithString:@“约会”];
NSLog(@“%@“,mStr)1;
// 快速创建可变字符串 必须在后边加上.mutableCopy
NSMutableString *mStr2 = @“我和僵尸有个约会”.mutableCopy;
NSLog(@“%@“,mStr2);
// 可变字符串拼接
// 格式化拼接
[mStr2 appendFormat:@“%@“,@“在日本广岛”];
NSLog(@“%@“,mStr2);
[mStr2 appendString:@“喝啤酒”];
NSLog(@“%@“,mStr2);
// 删除某段字符串
NSRange rang1 = {1 , 7};
[mStr2 deleteCharactersInRange:rang1];
NSLog(@“%@“,nStr2);
// 改可变字符串
[mStr2 replaceCharactersInRange:NSMakeRange(2,5) withString:@“人民广场”];
NSLog(@“%@“,mStr2);
NSMutableString *mStr3 = @“i am come form china”.mutableCopy;
[mStr3 capitalizedString];
// 每个单词的首字母大写
NSString *upFirstWord = [mStr3 capitallizedString];
NSLog(@“%@“,upFirstWord);
// 将所有字母大写
NSString *upAllWord = [mStr3 uppercaseString];
NSLog(@“%@“,upAllWord);
// 全部小写
NSMutableString *mStr4 = @“I AM COME FORM CHINA”.mutableCopy;
NSString *lowerAllWord = [mStr4 lowercaseString];
NSLog(@“%@“,lowerAllWord);