博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day4_1: NSString 和 NSMutableString 的使用
阅读量:4219 次
发布时间:2019-05-26

本文共 5447 字,大约阅读时间需要 18 分钟。

main.m

#import 
int main(int argc, const char * argv[]) {// //创建一个字符串对象// NSString * string=[[NSString alloc]initWithFormat:@"123"];// NSLog(@"string = %@",string);// // //通过initWithString:初始化方法创建的对象做了内存优化,如果是通过常量区来创建,建议直接保存常量区地址;如果通过其他内存的内容来创建,就需要在堆区开辟内存并且将内容复制到堆区。// NSString *string1=[[NSString alloc]initWithString:string];// NSLog(@"string1 = %@",string1); //-----1.1--NSString:不可变字符串------- //1、类函数初始化生成(不建议使用此方法) NSString * str1=[[NSString alloc]initWithString:@"abc"]; NSLog(@"%@",str1); //2、直接赋值方法(字符串初始化,建议使用这种方法) NSString * str2 =@"abc"; NSLog(@"%@",str2); //3、实例方法初始生成 NSInteger age=10; NSString *str3=[[NSString alloc]initWithFormat:@"age is %ld",age]; NSLog(@"%@",str3); //-----1.2--基本数据类型和字符串类型间转换------- //X.1 OC中的字符串转换为C语言的字符串 NSString * cStr = [[NSString alloc]initWithUTF8String:"Duke"]; const char * str4 = [cStr UTF8String]; printf("str4 = %s\n",str4); //X.2 将基本数据类型转换为字符串类型 NSInteger age2=18; NSString *ageStr = [[NSString alloc]initWithFormat:@"%ld",age2 ] ; NSLog(@"%@",ageStr); //X.3 把浮点型数据转换成字符串 float weight = 55.5; NSString *weightStr = [[NSString alloc]initWithFormat:@"%.2f",weight] ; NSLog(@"学辉的体重是:%@",weightStr); //X.4 把一个字符串,转换成一个基本数据类型 NSInteger age3= [ageStr integerValue]; NSLog(@"转换后的数据为:%ld",age3); //X.5 把字符串转换回浮点型的数据 float weight2 = [weightStr floatValue]; NSLog(@"%.2f",weight2); //-----1.3--获取或截取字符串------- //2.1 获取字符串长度 length;获取长度返回值是无符号长整型 NSUInteger length=[str3 length]; NSLog(@"length = %lu",length); //2.2 fromIndex 截取字符串;从index索引开始截取到字符串的末尾(包括这个索引) str3 = [str3 substringFromIndex:5]; NSLog(@"fromIndex = %@",str3); // toIndex 截取字符串,从头到index这个索引为至截取, str3 = [str3 substringToIndex:3]; NSLog(@"toIndex = %@",str3); //-----1.4--拼接字符串------- str3 = [str3 stringByAppendingString:@"this is a error string"]; NSLog(@"str3 = %@",str3); NSString *str5 = @"I am a student."; NSInteger age5=18; str5 = [str5 stringByAppendingFormat:@"My age is %ld",age5 ]; NSLog(@"str5 = %@",str5); //-----1.5--替换字符串------- NSString * str6 =@"good good study,day day up"; str6 = [str6 stringByReplacingOccurrencesOfString:@"good" withString:@"GOOD"]; NSLog(@"str6 = %@",str6); //-----1.6--字符串比较------- //2.5字符串比较,判断字符串是否相等(区分大小写) //isEqualToString 是布尔型的,返回值为YES或NO NSString * str7 = @"zero"; NSString * str8 = @"hour"; BOOL rel = [str7 isEqualToString:str8]; NSLog(@"rel = %d",rel); //2.6字符串的比较 NSString * str9 = @"a"; NSString * str10 = @"A"; NSComparisonResult rel2 = [str9 compare:str10]; NSLog(@"rel2 = %ld",rel2); //-----1.7--替换字符串------- //作业练习1,给定一个图片文件名,判断字符串中是否以".png"结尾,如果是就替换成“jpg”,如果不是就拼接".jpg"; NSString *imgName=@".png home.png1"; //判断后缀,返回bool值 //hasSuffix:判断是否以某字符串结尾; //hasPrefix:判断是否以某个字符串开始. BOOL isPng = [imgName hasPrefix:@".png"]; if (isPng) { //将第一个的字符串中所有的.png 替换为 .jpg; imgName = [imgName stringByReplacingOccurrencesOfString:@".png" withString:@".jpg"]; }else{ //拼接字符串.jpg imgName = [imgName stringByAppendingFormat:@".jpg"]; } NSLog(@"%@",imgName); //-----2.1--NSMutableString(不可变字符串)------ //NSMutableString //NSMutableString 是 NSString 类的子类 //该类创建的字符串是一个动态的可变字符串,可以对字符串进行增删改等操作。 //-----2.1--可变字符串的初始化 NSMutableString *mStr1 = [[NSMutableString alloc]initWithString:@"abc"]; //3.2 NSMutableString *mStr2 = [[NSMutableString alloc]initWithFormat:@"age is %ld",age ]; NSLog(@"mStr2 = %@",mStr2); /* 不可变字符串和可变字符串的区别 不可变的字符串的拼接方法:stringByAppendingString:返回值是NSString *,方法名是以string开头,需要一个指针变量去指向拼接后的新的字符串 可变字符串的拼接方法:appendString: 没有返回值,方法名不是以string开头 直接修改原有的字符串,不需要一个指针进行指向 */ //-----2.2--插入字符------- [mStr1 insertString:@"234" atIndex:1];//从0开始数,1是第二位 NSLog(@"mStr1 = %@",mStr1); //-----2.3--删除字符串中某一段内容------ //2.3.1删除字符串中某一段内容[NSMakeRange(1, 2),搜索索引为1~2的范围] NSRange range = NSMakeRange(1, 2); [mStr1 deleteCharactersInRange:range]; NSLog(@"mStr1 = %@",mStr1); //2.3.2 C语言中结构体的初始化 NSRange range2={1,3}; //NSRange是结构体 NSLog(@"range2 = %@",range2); //2.3.3删除字符串中指定的内容,动态删除(rangeOfString:@"234" 在mStr1中搜索@"234")// NSRange range3 = [mStr1 rangeOfString:@"234"];// NSLog(@"range3 = %@",NSStringFromRange(range3)); //删除range范围的字符串// [mStr1 deleteCharactersInRange:range3];// NSLog(@"%@",mStr1); //-----2.4--可变字符串的替换------- //练习2 用NSMutableString完成下述功能 //给定一个图片文件名,判断字符串中是否以png结尾,如果是就替换成"jpg",如果不是就拼接“.jpg” //初始化一个可变的字符串 NSMutableString *mStr3 = [[NSMutableString alloc]initWithString:@"home"]; //判断这个字符串是否是以".png"结尾的,如果是返回YES,不是返回NO BOOL isPng2=[mStr3 hasSuffix:@".png"]; if (isPng2) { //求出@“.png”这个字符串mStr3里面的索引位置 NSRange range = [mStr3 rangeOfString:@".png"]; //替换range中的字符串用@".jpg" [mStr3 replaceCharactersInRange:range withString:@".jpg"]; }else{ //在mStr3结尾拼接上".jpg"; [mStr3 appendString:@".jpg"]; } NSLog(@"%@",mStr3); return 0;}/* 总结 格式化输出符 %s:输出的是C语言当中的字符串“abc” %@:输出的是OC当中的对象,因为OC中的字符串是一个对象,所以它也可以输出OC中的字符串 *//* 总结:@“”只能初始化不可变的字符串 完全等价于下面这个字符串,将C语言中的字符串转换为OC中的字符串 [[NSString alloc] initWithUTF8String:"abc"]; initWithString: initWithFormat: initWithUTF8String: */

转载地址:http://doxmi.baihongyu.com/

你可能感兴趣的文章
并查集详解 (转)
查看>>
leetcode 20 Valid Parentheses
查看>>
leetcode32 Longest Valid Parentheses
查看>>
leetcode150 Evaluate Reverse Polish Notation
查看>>
leetcode204. Count Primes
查看>>
leetcode274. H-Index
查看>>
leetcode18. 4Sum
查看>>
leetcode3. Longest Substring Without Repeating Characters
查看>>
leetcode49. Group Anagrams
查看>>
leetcode136. Single Number
查看>>
leetcode187. Repeated DNA Sequences
查看>>
leetcode166. Fraction to Recurring Decimal
查看>>
leetcode36.Valid Sudoku
查看>>
leetcode85 maximal rectangle
查看>>
2016年半年计划~
查看>>
推荐系统简述(1)基于内容的推荐系统
查看>>
leetcode 149. Max Points on a Line
查看>>
python 小练习之山寨版markdown格式txt文件转html文件
查看>>
python小练习
查看>>
leetcode26. [Array]Remove Duplicates from Sorted Array
查看>>