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:
*/