本文主要讲解的是 不可变字符串NSStringNSString 可变字符串NSMutableString NSRangeNSNotFound详细使用方式 近期主要做的是iOS开发基础知识Objective-C中常用NS家族详细使用介绍,之后还会有关于NS类家族的详细使用方式 包括类型和值之间的转换。敬请期待
文章是博主原创,转载请标明出处 http://blog.csdn.net/werctzzz/article/details/70862522
#pragma mark 不可变字符串
// 1.初始化方法
NSString *str1 = [[NSString alloc]initWithFormat:@"这是第%d个字符串",1];
NSLog(@"1%@", str1);
NSString *str2 = [[NSString alloc]initWithString: str1];//字符串类型的初始化,用str1创建str2,相当于拷贝;
NSLog(@"2%@",str2);
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
// 2.便利构造器
NSString *str3 = [NSString stringWithFormat:@"%@", str2];
NSLog(@"3%@",str3);
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
// 3.字符串长度
// 3.1获取字符串长度
NSLog(@"str3长度为%ld", [str3 length]);
// 3.2获取字符串字节长度
long Slength = strlen([str3 UTF8String]);
NSLog(@"str3字节长度为%ld", Slength);
// 3.3获取字符串单个字节长度
// 遍历这个字符串,通过计算每一个字符字节来判断一下三种关系
for (int i = 0 ; i < str3.length; i++) {
NSString * temp = [str3 substringWithRange:NSMakeRange(i, 1)];
long cl = strlen([temp UTF8String]);
NSLog(@"每个字符字节长度%ld",cl);
}
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
// 4.字符串包含的内容
// 4.1 判断字符串是否包含某个前缀
//从前往后读取
if ([str3 hasPrefix:@"这是"]) {
NSLog(@"%@中包含前缀'这是'", str3);
}
if ([str3 hasPrefix:@"第"]) {
NSLog(@"%@中包含前缀'第'", str3);
}
NSLog(@"%d", [str3 hasPrefix:@"这是"]);
//判断你输入的字符串里是否有[@"这是第%d个字符串"]里的东西,有的话返回1,没有返回0.
// 4.2 判断字符串是否包含某个后缀
//从后往前读取
if ([str3 hasSuffix:@"串"]) {
NSLog(@"%@中包含后缀'串'", str3);
}
if ([str3 hasSuffix:@"第"]) {
NSLog(@"%@中包含后缀'第'", str3);
}
NSLog(@"%d", [str3 hasSuffix:@"串"]);
//判断你输入的字符串里是否有[@"这是第%d个字符串"]里的东西,有的话返回1,没有返回0.
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
// 5. 判断子串在一个字符串中的范围
NSString *string = @"一大波马宏达";
NSRange range = [string rangeOfString:@"马宏达"];
NSLog(@"location : %lu length: %lu",
range.location, range.length);
//从第range.location位开始,长度为range.length
//NSLog(@"%lu",NSNotFound);//没有发现0
NSString *s1 = @"么么哒,我了个草";
NSRange r1 = [s1 rangeOfString:@"我"];
NSLog(@"s1location : %lu s1length: %lu",
r1.location, r1.length);
if (r1.location == NSNotFound){
NSLog(@"不包含该字符串");
}else{
NSLog(@"包含该字符串");
}
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
// 6. 字符串截取
// 6.1 截取前面部分
//substringToIndex 从字符串的开头一直截取到指定位置
NSString *s2 = @"你是我的小苹果";
NSLog(@"%@",[s2 substringToIndex:5]);
// 6.2 截取从一个位置的后部分开始
//从3的位置开始截取
NSLog(@"%@",[s2 substringFromIndex:3]);
// 6.3 截取中间部分
NSRange r2 = NSMakeRange(2, 4);//从2的位置开始截取4个字符串
NSLog(@"%@",[s2 substringWithRange:r2]);
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
// 7. 拼接字符串
NSLog(@"%@",[s2 stringByAppendingFormat:@"|这是%d拼接的串%@",1,@"很坑"]);//拼接一段现加字符串
//Format 可以传好多参数,比如上面这个是格式串,可以吧一传进去
NSLog(@"%@",[s2 stringByAppendingString:s1]);//拼接一个已创建好的字符串
NSString * string2 = [s2 stringByAppendingFormat:@"无聊的%d下午,要%@",1,@"hi起来"];
//把s2后面拼接上这个新的字符串,并把新的字符串保存在string2里面
NSLog(@"%@",string2);
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
// 8. 替换字符串
NSLog(@"~~~%@",[string stringByReplacingOccurrencesOfString:@"马宏达" withString:@"陈伯"]);
//替换指定内容
NSLog(@"~~~%@",[[s2 stringByReplacingOccurrencesOfString:@"小苹果" withString:@"小萌义"] stringByAppendingString:s1]);
//替换s2指定内容之后,拼接s2
NSString *string3 = @"坑爹的王尼玛爱吃大盘鸡";//创建string3
NSString *string4 = [string3 stringByReplacingOccurrencesOfString:@"大盘鸡" withString:@"biangbiang面"];//把string3 里的指定内容替换保存在string4里面
NSLog(@"%@", string4);//打印string4
NSString *string5 = [string4 stringByReplacingOccurrencesOfString:@"坑爹的" withString:@"土豪"];//把string4 里的指定内容替换 保存在string5里面
NSLog(@"%@", [string5 stringByAppendingFormat:@"无聊的%d下午,要%@",1,@"hi起来"]);//在string5后面拼接一段字符串
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
// 9. 字符串比较
// -1,0,1 三个值
// 输出比较值是否相等相等为1,不等为0;
NSLog(@"%ld",[@"A" compare:@"B"]);
NSLog(@"%ld",[@"A" compare:@"A"]);
NSLog(@"%ld",[@"AA" compare:@"AB"]);
NSLog(@"%ld",[@"B" compare:@"A"]);
NSLog(@"%ld",[@"C" compare:@"B"]);
NSLog(@"%d",[@"123" isEqualToString:@"123"]);
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
// 10.字符串和数值类型转换
// 10.1 字符串转数值
NSString * string6 = @"1234";
NSString * string7 = @"3.14";
NSLog(@"%f",[string7 floatValue]);//转float方法
NSLog(@"%d",[string6 intValue]);//转int方法
//2种方法
// 10.2 数值转字符串
NSString *strInt = [[NSString alloc]initWithFormat:@"%d",543];
NSString *strFloat = [[NSString alloc]initWithFormat:@"%f",356.243];
NSString *strChar = [[NSString alloc]initWithFormat:@"%c",'a'];
NSString *strM = [[NSString alloc]initWithFormat:@"%@%@%@",strInt,strFloat,strChar];
NSLog(@"%@",strM);
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
// 11. 大小写转换操作
NSString *small = @"Title";
NSLog(@"%@",[small uppercaseString]);//大写
NSLog(@"%@",[small lowercaseString]);//小写
NSString *text = @"est sgsd yhdfg ydj weff waer cweers wtgserg";
NSLog(@"%@",[text capitalizedString]);//单词首字母大写
#pragma mark 可变字符串
// 1.初始化
NSMutableString * mString1 = [[NSMutableString alloc]initWithFormat:@"这是第%d个可变字符串",1];
NSLog(@"%@",mString1);
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
// 2.拼接字符串
NSString *sm1 = [[NSString alloc]initWithFormat:@"string1"];
NSLog(@"%p",sm1);
NSString *sm2 = [sm1 stringByAppendingString:@"string2"];
NSLog(@"%p %@",sm1 , sm2);
NSLog(@"%p", sm2);
[mString1 appendString: @"string2"];
NSLog(@"%@",mString1);
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
// 3.可变字符串的处理
// 3.1插入字符串 在指定位置之后插入字符串
[mString1 insertString:@"haah" atIndex:2];
NSLog(@"%@",mString1);
// 3.2删除字符串 在指定位置删除指定长度的字符串
[mString1 deleteCharactersInRange:NSMakeRange(2, 2)];
NSLog(@"%@",mString1);
// 3.3替换字符串 把指定位置的指定长度的字符串替换
[mString1 replaceCharactersInRange:NSMakeRange(2,4) withString:@"我们写的"];
NSLog(@"%@", mString1);
#pragma mark NSRange 和 NSNotFound 的用法
// 通常来说 NSRange NSNotFound 都是和 OC中的容器类 配合使用的
// 在上面的描述过程中我使用到了 NSRange 和 NSNotFound
// NSRange是一个结构体,其中location是一个以0为开始的index,length是表示对象的长度
// NSRange详解:
NSString * expStr = @"python manage.py startapp app-name";
NSRange expRag1 = NSMakeRange (25, 3);
// 1。打印指定range的字符串
NSLog (@" %@", [expStr substringWithRange:expRag1]);
// 2。搜索字符串:
NSRange expRag2 = [expStr rangeOfString:@"startapp"];
// 找到名为"startapp"的字符串
if (expRag2.length > 0)
NSLog(@"%@", NSStringFromRange(expRag2));
// ⭐️NSStringFromRange方法,把NSRange返回一个NSString。
// ⭐️NSRangeFromString方法,把NSString转换为NSRange
// 从后向前反向搜索字符串:
NSRange expRag3 = [expStr rangeOfString:@"ar" options:NSBackwardsSearch];
// What did we find
if (expRag3.length > 0)
NSLog(@"%@", NSStringFromRange(expRag3));
// 关于搜索的条件这一自己点击进入查看以下是枚举
// NSCaseInsensitiveSearch
// NSLiteralSearch
// NSBackwardsSearch
// NSAnchoredSearch
// NSNumericSearch
// NSDiacriticInsensitiveSearch
// NSWidthInsensitiveSearch
// NSForcedOrderingSearch
// NSNotFound通常用在判断字符串中是否有指定的东西,NSNotFound表示没有发现、不存在。
// 例:
NSString * astring = @"伟大的我废果然,我了个草";
NSRange arange = [astring rangeOfString:@"我"];
NSLog(@"s1location : %lu s1length: %lu",arange.location, arange.length);
if (r1.location == NSNotFound){
NSLog(@"不包含该字符串");
}else{
NSLog(@"包含该字符串");
}