版权声明:允许自己一步一步成长,只要每天都有收获,不求多,只求吸收.交流QQ群:52795427 https://blog.csdn.net/JackJia2015/article/details/79887685
NSString 是一个不可变的字符串对象。这不是表示这个对象声明的变量的值不可变,而是表示它初始化以后,你不能改变该变量所分配的内存中的值,但你可以重新分配该变量所处的内存空间。而NSMutableString是可变的,意味着你可以追加它的内存空间,或者修改它所分配的内存空间中的值。
OC字符串
NSString *str1 = @”hello world”;
NSString *str2 =[ [NSString alloc]initWithFormat:@”xiaoming %@”,str1];
常用的替换符
- %@ NSString实例
- %d,%D,%i 整数
- %4d,%4D,%4i 格式化整数
- %ld,%lD,%li 长整数
- %u,%U 无符号整数
- %x 将无符号整数以十六进制小写字母显示
- %X 将无符号整数以十六进制大写字母显示
- %f 小数
- %c 字符
- %s C语言字符串
- %% 显示%字符本身
C语言字符串
char *str = “hello world”; OC兼容C语言的字符串
一.创建字符串
//对象方法 "-"
//(1)声明一个常量字符串
NSString *str1 = @"hello world";
//(2)通过已知字符串,生产一个新的字符串
NSString *str2 = [[NSString alloc]initWithString:str1];
//(3)用一个c语言字符串生成一个OC
NSString *str3 = [[NSString alloc]initWithUTF8String:"hello world"];
//(4)格式化创建字条串生成一个新的字符串,可以拼接
NSString *str4 =[ [NSString alloc]initWithFormat:@"xiaoming %@",str1];
//(5)先初始化的理论用法
NSString *str5 = [NSString new];
str5 = @"hello world";
//类方法 "+"创建
NSString *str6 = [NSString stringWithString:str1];
NSString *str7 = [NSString stringWithUTF8String:"hello world"];
NSString *str8 = [NSString stringWithFormat:@"xiaoming %@",str1];
二.NSString字符串长度计算(length方法)
NSString *str = @"siebel workroom";
NSUInteger len = [str length];
NSLog(@"str length:%ld",len); //一定是%ld
三.判断两个字符串是否相同
BOOL ret = [str1 isEqualToString:str2];
四.比较字符串
//NSComparisonResult是个枚举,NSOrderedAscending(升序「-1」),NSOrderedSame「0」,NSOrderedDescending(降序「1」) 可做判断
NSComparisonResult result = [str1 compare:str4];
if (result == NSOrderedAscending) {
NSLog(@"str4>str1");
}
NSLog(@"%ld",result); //打印结果为-1(升序)
/*compare 常用的3个条件: NSCaseInsensitiveSearch:不区分大小写字符 NSLiteralSearch:进行完全比较,区分大小写(默认) NSNumericSearch:比较字符串的字符个数,而不是字符值 */
NSString *str11 = @"abc";
NSString *str12 = @"Abc";
//可以添加多个比较条件
NSComparisonResult result1 = [str11 compare:str12 options:NSCaseInsensitiveSearch|NSNumericSearch];
NSLog(@"%ld",result1); //打印结果为0
五.截取
//通过字符串切割得到新的字符串 要前面的
NSString *str13 = [str1 substringFromIndex:6];
NSLog(@"%@",str13);//打印world
//要后面的
NSString *str14 = [str1 substringToIndex:6];
//指定范围截取
NSString *str15 = [str1 substringWithRange:NSMakeRange(6, 2)];//6开始 向后2位
//字符串出现位置 空格不算位置 range 结构体变量
NSRange range = [str1 rangeOfString:@"world"];
NSLog(@"%lu %lu",(unsigned long)range.location,(unsigned long)range.length);
六.NSString字符串前后缀检查
NSString *url = @"https://ios,itcast.cn";
//检测一个字符串的前缀是否是http://或者https://开头 //[str hasPrefix:@"要检测的内容"];
if ([url hasPrefix:@"http://"]||[url hasPrefix:@"https://"])
{
NSLog(@"这是一个网址");
}else{
NSLog(@"这不是一个网址");
}
//后缀
NSString *imgName = @"xxxxx.jpg";
//检测一个字符串的后缀是否是.jpg //[str hasSuffix:@"要检测的内容"];
if ([imgName hasSuffix:@".jpg"]) {
NSLog(@"这是一个jpg图片");
}else{
NSLog(@"这不是一个jpg图片");
}
七.NSString字符串的替换
NSString *str16 = [str1 stringByReplacingOccurrencesOfString:@"world" withString:@"世界"];
NSLog(@"%@",str16);
八.NSString和其他类型的转换
NSString *str17 = @"1";
int a = 19;
//把字符串类型转换成其他类型
int b = [str intValue]; //intValue,floatValue,doubleValue
int sum = a+b;
//OC字符串和C字符串的互相转换
char *s = "zhangsanfeng";
NSString *str20 = [NSString stringWithUTF8String:s]; //相反的用[str2 UTF8String]
NSLog(@"str = %@",str);
九.NSString去除首尾空格
/*
controlCharacterSet去头尾空格
lowercaseLetterCharacterSet去头尾小写字母
uppercaseLetterCharacterSet去收尾大写字母
+ (NSCharacterSet *)characterSetWithRange:(NSRange)aRange;去头尾制定位置字母
*/
NSString *str18 = @" hello world ";
NSString *str19 = [str1 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];//返回去除后的字符串
NSLog(@"%@",str18);
NSLog(@"%@",str19);
NSMutableString
NSMutableString类的创建方式和NSString的创建方式差不多,只是有一点需要注意,NSMutableString不能使用直接方式去创建,因为直接方式创建的字符串都是在常量池中,而常量池中的值都是不可变的,所以不能创建的,同时initWithString创建出来的字符串也是不在常量池中的。
//NSMutableString *str21 = @"错误初始化,可变"
NSMutableString *str21 = [[NSMutableString alloc]initWithString:str1];
NSMutableString *str22 = [NSMutableString stringWithString:str1];
NSMutableString *str23 = [[NSMutableString alloc]initWithUTF8String:"hello"];
NSMutableString *str24 = [NSMutableString stringWithUTF8String:"hello"];
NSMutableString *str25 = [[NSMutableString alloc]initWithFormat:@"%@ world",str1];
NSMutableString *str26 = [NSMutableString stringWithFormat:@"%@ world",str1];
增 追加字符串,不会产生新的对象
[str21 appendString:@"xxxx"];
[str22 appendFormat:@"%@,%c",str21,'o'];
NSLog(@"%@",str21);
[str21 insertString:@"###" atIndex:5];
NSLog(@"%@",str21);
删
NSMutableString *str27 = [NSMutableString stringWithString:@"hello"];
[str27 deleteCharactersInRange:NSMakeRange(1, 3)];
NSLog(@"%@",str27);
改 替换
NSMutableString *str28 = [NSMutableString stringWithString:@"hello"];
NSRange ranges = [str28 rangeOfString:@"ll"];//先查找出需要替换字符串的范围
[str28 replaceCharactersInRange:ranges withString:@"ee"];
NSLog(@"%@",str28);
查
NSString *str29 = @"can you \n speak English";
NSString *str30 = @"\n";
//在str1这个字符串中搜索\n,判断有没有
if ([str29 rangeOfString:str30].location != NSNotFound) {
NSLog(@"这个字符串中有\n");
}
//rangeOfString 前面的参数是要被搜索的字符串,后面的是要搜索的字符
//NSNotFound 表示请求操作的某个内容或者item没有发现,或者不存在