内容简介: Foundation框架之NSString和NSMutableString
基本用法
//1.创建字符串
//1.1常规创建,创建一个空的字符串
//这样创建的字符串几乎没用,因为它们是空的而且还不可变
//alloc创建
NSString *str1 = [[NSString alloc] init];
NSLog(@"str1 is:%@",str1);
//用类方法创建
NSString *str2 = [NSString string];
NSLog(@"str2 is:%@",str2);
//1.2格式化创建
//alloc创建
NSString *str3 = [[NSString alloc] initWithFormat:@"wlecome"];
NSLog(@"str3 is:%@",str3);
//类方法创建
NSString *str4 = [NSString stringWithFormat:@"beijng"];
NSLog(@"str4 is:%@",str4);
//1.3快速创建
NSString *strtemp = @"strtemp";
NSLog(@"strtemp is %@",strtemp);
//1.4下面两种方法已经不推荐使用
//因为它们较为繁琐,且效果和快速创建是一样的,已经被弃用
//NSString *str222 = [[NSString alloc] initWithString:@"222"];
//NSString *str333 = [NSString stringWithString:@"333"];
//1.5特别注意
//这样并没有修改字符串,而是修改了指针的指向
str1 =@"hello world";
NSLog(@"str1 is %@",str1);
//2.字符串的比较
NSString *str6 = @"str6";
NSString *str7 = @"str6";
//2.1比较是不是同一个对象
if([str6 isEqualTo:str7]){
NSLog(@"str6和str7是同一个对象");
}else{
NSLog(@"不是同一个对象");
//这样创建的字符串几乎没用,因为它们是空的而且还不可变
//alloc创建
NSString *str1 = [[NSString alloc] init];
NSLog(@"str1 is:%@",str1);
//用类方法创建
NSString *str2 = [NSString string];
NSLog(@"str2 is:%@",str2);
//1.2格式化创建
//alloc创建
NSString *str3 = [[NSString alloc] initWithFormat:@"wlecome"];
NSLog(@"str3 is:%@",str3);
//类方法创建
NSString *str4 = [NSString stringWithFormat:@"beijng"];
NSLog(@"str4 is:%@",str4);
//1.3快速创建
NSString *strtemp = @"strtemp";
NSLog(@"strtemp is %@",strtemp);
//1.4下面两种方法已经不推荐使用
//因为它们较为繁琐,且效果和快速创建是一样的,已经被弃用
//NSString *str222 = [[NSString alloc] initWithString:@"222"];
//NSString *str333 = [NSString stringWithString:@"333"];
//1.5特别注意
//这样并没有修改字符串,而是修改了指针的指向
str1 =@"hello world";
NSLog(@"str1 is %@",str1);
//2.字符串的比较
NSString *str6 = @"str6";
NSString *str7 = @"str6";
//2.1比较是不是同一个对象
if([str6 isEqualTo:str7]){
NSLog(@"str6和str7是同一个对象");
}else{
NSLog(@"不是同一个对象");
}
//2.2比较字符串的指针
BOOL bool67 =(str6 == str7);
if(bool67){
NSLog(@"str6和 str7是同一个字符串");
}else{
NSLog(@"str6和str7不是同一个字符串");
BOOL bool67 =(str6 == str7);
if(bool67){
NSLog(@"str6和 str7是同一个字符串");
}else{
NSLog(@"str6和str7不是同一个字符串");
}
//2.3比较字符串内容
if ([str6 isEqualToString:str7]){
NSLog(@"str7 和str6 字符串内容相同");
}else{
NSLog(@"str6和str7字符串内容不相同");
NSLog(@"str7 和str6 字符串内容相同");
}else{
NSLog(@"str6和str7字符串内容不相同");
}
//2.4比较字符串的大小
//使用NSComparisonResult接受结果
//其原理是使用了枚举
//typedef NS_ENUM(NSInteger, NSComparisonResult)
//{NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
NSString *str8 = @"see you tommorrow";
NSString *str9 = @"see you chen";
NSComparisonResult result = [str8 caseInsensitiveCompare:str9];
if(result ==NSOrderedAscending){
NSLog(@"升序");
}else if(result == NSOrderedSame){
NSLog(@"相等");
}else if(result == NSOrderedDescending){
NSLog(@"降序");
}
//3.求字符串的长度,使用length
NSInteger length = [str8 length];
NSLog(@"str8 length is %ld",length);
//4.字符串转换的问题
//转为大写:uppercaseStrig
NSString *str8upper = [str8 uppercaseString];
NSLog(@"str8upper is %@",str8upper);
//转为小写:lowercaseString
NSString *str8lower = [str8 lowercaseString];
NSLog(@"str8lower is %@",str8lower);
//首字母大写:capitalzedString
NSString *str8capitalized =[str8 capitalizedString];
NSLog(@"strcapitalized is %@",str8capitalized);
//5.字符串和基本数据类型的转换
//5.1转为整型
NSString *str10 = @"123";
NSInteger integervalue = [str10 integerValue];
NSLog(@"integervalue is %ld",integervalue);
//5.2转为浮点型
NSString *str11 = @"1234.1";
CGFloat floatvalue = [str11 doubleValue];
//其原理是使用了枚举
//typedef NS_ENUM(NSInteger, NSComparisonResult)
//{NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
NSString *str8 = @"see you tommorrow";
NSString *str9 = @"see you chen";
NSComparisonResult result = [str8 caseInsensitiveCompare:str9];
if(result ==NSOrderedAscending){
NSLog(@"升序");
}else if(result == NSOrderedSame){
NSLog(@"相等");
}else if(result == NSOrderedDescending){
NSLog(@"降序");
}
//3.求字符串的长度,使用length
NSInteger length = [str8 length];
NSLog(@"str8 length is %ld",length);
//4.字符串转换的问题
//转为大写:uppercaseStrig
NSString *str8upper = [str8 uppercaseString];
NSLog(@"str8upper is %@",str8upper);
//转为小写:lowercaseString
NSString *str8lower = [str8 lowercaseString];
NSLog(@"str8lower is %@",str8lower);
//首字母大写:capitalzedString
NSString *str8capitalized =[str8 capitalizedString];
NSLog(@"strcapitalized is %@",str8capitalized);
//5.字符串和基本数据类型的转换
//5.1转为整型
NSString *str10 = @"123";
NSInteger integervalue = [str10 integerValue];
NSLog(@"integervalue is %ld",integervalue);
//5.2转为浮点型
NSString *str11 = @"1234.1";
CGFloat floatvalue = [str11 doubleValue];
NSLog(@"floatvalue
is %f",floatvalue);
//5.3z换为布尔型
BOOL boolvalue
= [str10 boolValue];
NSLog(@"boolalue is %d",boolvalue);
//特别注意
//如果赋值的字符串是false或者是0,结果是0
//如果赋值的字符串是true或者其他不为0的字符串,结果是1
NSString *truth = @"01";
BOOL value = [truth boolValue];
NSLog(@"value is %d",value);
//6.从键盘输入赋值一个字符串
//使用字符指针来引用一个字符串
char *p = malloc(20);//开辟内存
NSLog(@"请输入字符串:");
scanf("%s",p);
NSString *input = [NSString stringWithCString:pencoding:NSUTF8StringEncoding];
NSLog(@"boolalue is %d",boolvalue);
//特别注意
//如果赋值的字符串是false或者是0,结果是0
//如果赋值的字符串是true或者其他不为0的字符串,结果是1
NSString *truth = @"01";
BOOL value = [truth boolValue];
NSLog(@"value is %d",value);
//6.从键盘输入赋值一个字符串
//使用字符指针来引用一个字符串
char *p = malloc(20);//开辟内存
NSLog(@"请输入字符串:");
scanf("%s",p);
NSString *input = [NSString stringWithCString:pencoding:NSUTF8StringEncoding];
NSLog(@"经过输入得到的字符串是:%@",input);
用法补充
//1.字符串截取
//1.1从开始截取到最后
NSString *str1 = @"hello world";
NSString *str2 =[str1 substringFromIndex:1];
NSLog(@"str2 is %@",str2);
//1.2截取下前面的字符,不包括下标
//包括最后一位的截取是11,如果是12就会数组越界
NSString *str3 = [str1 substringToIndex:11];
NSLog(@"str3 is %@",str3);
//1.3使用结构体截取
//从下标2位开始截取,截取6位
NSRange range ={2, 6};
NSString *str4 = [str1 substringWithRange:range];
NSLog(@"str4 is %@",str4);
//输出一个结构体
NSLog(@"range is %@",NSStringFromRange(range));
//1.1从开始截取到最后
NSString *str1 = @"hello world";
NSString *str2 =[str1 substringFromIndex:1];
NSLog(@"str2 is %@",str2);
//1.2截取下前面的字符,不包括下标
//包括最后一位的截取是11,如果是12就会数组越界
NSString *str3 = [str1 substringToIndex:11];
NSLog(@"str3 is %@",str3);
//1.3使用结构体截取
//从下标2位开始截取,截取6位
NSRange range ={2, 6};
NSString *str4 = [str1 substringWithRange:range];
NSLog(@"str4 is %@",str4);
//输出一个结构体
NSLog(@"range is %@",NSStringFromRange(range));
//2.获取字符
//通过下标取字符
NSString *str5 = @"I love you ,China";
char c = [str5 characterAtIndex:3];
NSLog(@"str5 中下标为3的字符是%c",c);
//3.通过特殊字符分隔字符串
NSString *str6 = @"天平座,水瓶座,双子座,白羊座";
NSArray *array = [str6 componentsSeparatedByString:@","];
NSLog(@"输出这个数组是%@",array);
//4.字符串的拼接
NSString *str7 = @"take me";
NSString *str8 = @"to your heart";
//4.1 stringWithFormat
NSString *str9 = [NSString stringWithFormat:@"%@ %@",str7,str8];
NSLog(@"str9 is %@",str9 );
//4.2 stringByAppendingString
NSString *str10 = [str7 stringByAppendingString:str8];
NSLog(@"str10 is %@",str10);
//4.3 stringbyAppendingFormat
NSString *str11 = [str7 stringByAppendingFormat:@" %@",str8];
NSLog(@"str11 is %@",str11);
//字符串拼接扩展一,自动增加了"/"
NSString *str12 = [str7 stringByAppendingPathComponent:str8];
NSLog(@"st12 is %@",str12);
//字符串拼接扩展二,自动增加了“."
NSString *str13 = [str7 stringByAppendingPathExtension:str8];
NSLog(@"str13 is %@",str13);
//5.字符串中的类型转换
NSString *truth = @"false";
BOOL value = [truth boolValue];
NSLog(@"value is %d",value);
//6.字符串查找
//指定一个字符串,然后在原字符串中查找,返回的是一个结构体
NSString *str14 = @"my hometown is zhumadian!";
NSString *str15 = @"zhumadian";
NSRange range2 = [str14 rangeOfString:str15];
//输出结构体
NSLog(@"range2 is %@",NSStringFromRange(range2));
//通过获取结构体内容的方式输出
NSLog(@"range2.location is%ld,range2 length is %ld",range2.location,range2.length);
//通过判断的方式,查看是否找到了
if(range2.location!= NSNotFound){
NSLog(@"找到了字符串");
}else{
NSLog(@"没有找到字符串");
}
//在枚举中,NSnotFound被定义为NSIntegerMax,即最大值
//输出的值是:9223372036854775807
NSLog(@"输出NSNotFound:%ld",NSNotFound);
//7.字符串替换
//7.1使用已有字符串替换原字符串中的指定部分
//StringByReplacingOccurrencesOfString
NSString *str16 = @"the way to success";
NSString *str17 = [str16 stringByReplacingOccurrencesOfString:@"success" withString:@"dream"];
NSLog(@"替换后得到字符串str17:%@",str17);
//7.2使用结构体替换
//stringByReplacingCharactersInRange
NSRange range3 = {3, 6};
NSString *str18 = @"abcdefghijk";
NSString *str19 = [str18 stringByReplacingCharactersInRange:range3 withString:@"ZS"];
NSLog(@"str19 is %@",str19);
//通过下标取字符
NSString *str5 = @"I love you ,China";
char c = [str5 characterAtIndex:3];
NSLog(@"str5 中下标为3的字符是%c",c);
//3.通过特殊字符分隔字符串
NSString *str6 = @"天平座,水瓶座,双子座,白羊座";
NSArray *array = [str6 componentsSeparatedByString:@","];
NSLog(@"输出这个数组是%@",array);
//4.字符串的拼接
NSString *str7 = @"take me";
NSString *str8 = @"to your heart";
//4.1 stringWithFormat
NSString *str9 = [NSString stringWithFormat:@"%@ %@",str7,str8];
NSLog(@"str9 is %@",str9 );
//4.2 stringByAppendingString
NSString *str10 = [str7 stringByAppendingString:str8];
NSLog(@"str10 is %@",str10);
//4.3 stringbyAppendingFormat
NSString *str11 = [str7 stringByAppendingFormat:@" %@",str8];
NSLog(@"str11 is %@",str11);
//字符串拼接扩展一,自动增加了"/"
NSString *str12 = [str7 stringByAppendingPathComponent:str8];
NSLog(@"st12 is %@",str12);
//字符串拼接扩展二,自动增加了“."
NSString *str13 = [str7 stringByAppendingPathExtension:str8];
NSLog(@"str13 is %@",str13);
//5.字符串中的类型转换
NSString *truth = @"false";
BOOL value = [truth boolValue];
NSLog(@"value is %d",value);
//6.字符串查找
//指定一个字符串,然后在原字符串中查找,返回的是一个结构体
NSString *str14 = @"my hometown is zhumadian!";
NSString *str15 = @"zhumadian";
NSRange range2 = [str14 rangeOfString:str15];
//输出结构体
NSLog(@"range2 is %@",NSStringFromRange(range2));
//通过获取结构体内容的方式输出
NSLog(@"range2.location is%ld,range2 length is %ld",range2.location,range2.length);
//通过判断的方式,查看是否找到了
if(range2.location!= NSNotFound){
NSLog(@"找到了字符串");
}else{
NSLog(@"没有找到字符串");
}
//在枚举中,NSnotFound被定义为NSIntegerMax,即最大值
//输出的值是:9223372036854775807
NSLog(@"输出NSNotFound:%ld",NSNotFound);
//7.字符串替换
//7.1使用已有字符串替换原字符串中的指定部分
//StringByReplacingOccurrencesOfString
NSString *str16 = @"the way to success";
NSString *str17 = [str16 stringByReplacingOccurrencesOfString:@"success" withString:@"dream"];
NSLog(@"替换后得到字符串str17:%@",str17);
//7.2使用结构体替换
//stringByReplacingCharactersInRange
NSRange range3 = {3, 6};
NSString *str18 = @"abcdefghijk";
NSString *str19 = [str18 stringByReplacingCharactersInRange:range3 withString:@"ZS"];
NSLog(@"str19 is %@",str19);
第二部分》》》》NSMutableString的使用
//NSMutableString是NSString的子类
//NSMutbaleString是可变字符串,可以修改字符串的内容
//1.创建可变字符串
//注意:不可以使用快速创建的方式
//1.1NSMutableString继承与NSString,同样通过alloc和类方法可以创建空的字符串
//1.2普通方法创建
NSMutableString *str1 =[[NSMutableString alloc]initWithString:@"welcome"];
NSLog(@"str1 is %@",str1);
NSMutableString *str2 = [NSMutableString stringWithString:@"it is ok!"];
NSLog(@"str2 is %@",str2);
//1.3通过格式化的方法来创建
NSMutableString *str3 =[[NSMutableString alloc] initWithFormat:@"hello"];
NSLog(@"str3 is %@",str3);
NSMutableString *str4 = [NSMutableString stringWithFormat:@"world"];
NSLog(@"str4 is %@",str4);
//2.插入字符串
//使用insertString
[str4 insertString:@"hehe" atIndex:0];
NSLog(@"str4从0位置插入字符串后:str4 = %@",str4);
//3.删除字符串
//首先构建好结构体
//deleteCharactersInRange
NSRange range = {1,2};
[str4 deleteCharactersInRange:range];
NSLog(@"str4删除字符串后得:str4 = %@",str4);
//1.创建可变字符串
//注意:不可以使用快速创建的方式
//1.1NSMutableString继承与NSString,同样通过alloc和类方法可以创建空的字符串
//1.2普通方法创建
NSMutableString *str1 =[[NSMutableString alloc]initWithString:@"welcome"];
NSLog(@"str1 is %@",str1);
NSMutableString *str2 = [NSMutableString stringWithString:@"it is ok!"];
NSLog(@"str2 is %@",str2);
//1.3通过格式化的方法来创建
NSMutableString *str3 =[[NSMutableString alloc] initWithFormat:@"hello"];
NSLog(@"str3 is %@",str3);
NSMutableString *str4 = [NSMutableString stringWithFormat:@"world"];
NSLog(@"str4 is %@",str4);
//2.插入字符串
//使用insertString
[str4 insertString:@"hehe" atIndex:0];
NSLog(@"str4从0位置插入字符串后:str4 = %@",str4);
//3.删除字符串
//首先构建好结构体
//deleteCharactersInRange
NSRange range = {1,2};
[str4 deleteCharactersInRange:range];
NSLog(@"str4删除字符串后得:str4 = %@",str4);
//4.拼接字符串,是在本身上添加
//4.1使用appendString
[str4 appendString:@"ZS"];
NSLog(@"使用appendString追加:str4=%@",str4);
int index =90;
//4.2使用appendFormat
[str4 appendFormat:@"%d",index];
NSLog(@"使用appendFormat添加:str4=%@",str4);
//4.1使用appendString
[str4 appendString:@"ZS"];
NSLog(@"使用appendString追加:str4=%@",str4);
int index =90;
//4.2使用appendFormat
[str4 appendFormat:@"%d",index];
NSLog(@"使用appendFormat添加:str4=%@",str4);
//5.替换字符串
NSRange range2 ={2,5};
[str4 replaceCharactersInRange:range2 withString:@"替换"];
NSRange range2 ={2,5};
[str4 replaceCharactersInRange:range2 withString:@"替换"];
NSLog(@"替换字符串后str4
= %@",str4);
第三部分》》》关于字符串的练习
//题目:去掉字符串“123-456-789”中间的‘-’,得到新数组
//第一种方法
//分别截取获取数字,得到三个新数组,然后拼接
NSString *str = @"123-456-789";
NSString *str1 = [str substringWithRange:NSMakeRange(0, 3)];
NSString *str2 = [str substringWithRange:NSMakeRange(4, 3)];
NSString *str3 =[str substringWithRange:NSMakeRange(8, 3)];
NSString *str4 = [str1 stringByAppendingFormat:@"%@%@",str2,str3];
NSLog(@"方法一得到字符串:%@",str4);
//第二种方法
//替换的思想,直接把“-”替换掉
NSString *str5 = [str stringByReplacingOccurrencesOfString:@"-"withString:@""];
NSLog(@"方法二得到字符串:%@",str5);
//第三种方法
//先分割得到数组,再组装拼接
NSArray *array=[str componentsSeparatedByString:@"-"];
NSString *str6 =[array componentsJoinedByString:@""];
NSLog(@"str7 is %@",str6);
//第一种方法
//分别截取获取数字,得到三个新数组,然后拼接
NSString *str = @"123-456-789";
NSString *str1 = [str substringWithRange:NSMakeRange(0, 3)];
NSString *str2 = [str substringWithRange:NSMakeRange(4, 3)];
NSString *str3 =[str substringWithRange:NSMakeRange(8, 3)];
NSString *str4 = [str1 stringByAppendingFormat:@"%@%@",str2,str3];
NSLog(@"方法一得到字符串:%@",str4);
//第二种方法
//替换的思想,直接把“-”替换掉
NSString *str5 = [str stringByReplacingOccurrencesOfString:@"-"withString:@""];
NSLog(@"方法二得到字符串:%@",str5);
//第三种方法
//先分割得到数组,再组装拼接
NSArray *array=[str componentsSeparatedByString:@"-"];
NSString *str6 =[array componentsJoinedByString:@""];
NSLog(@"str7 is %@",str6);