内容简介: 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 :p encoding : 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 :p encoding : 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);