day4_1: NSString 和 NSMutableString 的使用

来源:互联网 发布:手机搞怪视频软件 编辑:程序博客网 时间:2024/05/16 05:17

main.m

#import <Foundation/Foundation.h>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: */



0 0
原创粉丝点击