NSString创建方法
- 通过字符串常量创建:存储在字符串常量区,如果创建多个字符串常量,且内容一致,那么多个对象会指向同一块存储空间
NSString *str1 = @"作者是个大帅逼";
```
-
通过alloc init创建:存储在堆区
NSString *str2 = [[NSString alloc] initWithFormat:@"作者是个大帅逼"];
```
-
通过类工厂方法创建:存储在堆区
NSString *str2 = [NSString stringWithFormat:@"作者是个大帅逼"];
-
注意:一般情况下,只要是通过alloc或者类工厂方法创建的对象,每次都会在堆内存中开辟一块新的存储空间。但是如果是通过alloc和initWithString方法,那就除外,因为这个方法是通过copy返回一个字符串对象。copy分为浅拷贝和深拷贝,如果是深拷贝就会创建一个新的对象,如果是浅拷贝就不会创建一个新的对象,而是直接返回一个地址给我们。initWithString是浅拷贝,无论在什么平台什么编译器都是指向同一个存储空间
读取文件中的字符串##
NSString *str = [NSString stringWithContentsOfFile:文件路径 encoding:编码 error:读取错误会将错误信息保存];
//编码一般是UTF-8:NSUTF8StringEncoding
//一般这样使用:
//文件路径
NSString *path = @"";
//错误信息
NSError *error = nil;
NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
//判断是否出错
if (error == nil) {
NSLog(@"str = %@", str);
}
else{
NSLog(@"error = %@",[error localizedDescription]);
}
将字符串写入文件中##
NSString *str = @"作者是个大帅比";
//atomically 如果传入YES,字符串写入文件过程中如果没有写完,那么不会生成文件
// 如果传入NO,字符串写入文件过程中没有写完,会生成文件
NSString *path = @"/Users/UsersName/Desktop/abc.txt";
NSError *error = nil;
BOOL flag = [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
NSLog(@"flag = %i", flag);
URL##
- URL固定格式
- 包含协议、主机域名(服务器名称/IP地址)、路径
- URL = 协议头://主机域名/路径
- 常见的URL协议头
- http/https:// :超文本传输协议资源,网络资源
- ftp:// :文件传输协议
- file:// :本地电脑文件
- URL创建
//传入完整的字符串创建
NSURL *url = [NSURL URLWithString: @""];
//通过文件路径创建(默认就是file协议)
NSURL *url = [NSURL fileURLWithPath: @""];
通过URL访问文件##
//1.创建URL
//协议头 + 主机地址 + 文件路径
NSString *path = @"协议头 + 主机地址 + 文件路径";
NSURL *url = [NSURL URLWithString:path];
NSError *error = nil;
//2.根据URL加载文件中的字符串
NSString *str = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
if (error == nil) {
NSLog(@"str = %@", str);
}
else
{
NSLog(@"error = %@", [error localizedDescription]);
}
//注意:如果加载的资源是本机上的资源,那么URL中的主机地址可以省略
//但是文件路径前的/不能省略,文件路径最前面的/代表根路径
//如果使用的是fileURLWithPath,系统自动添加协议头
//访问本机资源创建URL时,建议使用fileURLWithPath
//URL不支持中文,有中文无法访问,使用fileURLWithPath会对中文处理
//如果不使用fileURLWithPath,就要先对字符串进行处理
(NSString *) = [(NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSString *)]
文件写入##
NSString *str = @"1";
NSURL *url = [NSURL URLWithString:@"file:///Users/y1shichanganluan/Desktop/abd.txt"];
NSError *error = nil;
[str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:&error];
if (error == nil) {
NSLog(@"str = %@", str);
}
else{
NSLog(@"error = %@", [error localizedDescription]);
}
注意:多次往同一个文件写入内容,那么最后一次就会覆盖前一次的
字符串比较##
比较字符串内容是否相等
//比较字符串内容是否相等
//返回类型是BOOL
[(NSString *) isEqualToString:(NSString *)];
比较字符串的大小
//比较字符串的大小:compare
NSString *str1 = @"a";
NSString *str2 = @"b";
/*compare函数返回三个值:NSOrderedAscending NSOrderedSame, NSOrderedDescending*/
switch ([str1 compare:str2]) {
case NSOrderedAscending:
NSLog(@"前面的小于后面的");
break;
case NSOrderedSame:
NSLog(@"前面的等于后面的");
break;
case NSOrderedDescending:
NSLog(@"前面的大于后面的");
break;
default:
break;
忽略大小写进行比较
//忽略大小写进行比较:caseInsensitiveCompare
NSString *str1 = @"a";
NSString *str2 = @"A";
/*compare函数返回三个值:NSOrderedAscending NSOrderedSame, NSOrderedDescending*/
switch ([str1 caseInsensitiveCompare:str2]) {
case NSOrderedAscending:
NSLog(@"前面的小于后面的");
break;
case NSOrderedSame:
NSLog(@"前面的等于后面的");
break;
case NSOrderedDescending:
NSLog(@"前面的大于后面的");
break;
default:
break;
}
}
字符串搜索##
判断是否以xxx开头
NSString *str1 = @"http//:www.baidu.com";
//从第一个字符开始判断,只要不匹配返回NO
if ([str1 hasPrefix:@"http"]) {
NSLog(@"1");
}
else
NSLog(@"2");
判断是否以xxx结尾
NSString *str1 = @"http//:www.baidu.com";
//从字符串最后一个字符开始匹配,只要不匹配就返回NO
if ([str1 hasSuffix:@"com"]) {
NSLog(@"1");
}
else
NSLog(@"2");
判断字符串中是否包含xxx
NSString *str1 = @"http//:www.baidu.com";
//NSRange 是一个结构体,包含length和location
//location从0开始,length从1开始
//如果没有查找的字符串,length返回0,location返回NSNotFound
NSRange range = [str1 rangeOfString:@"tb"];
if (range.location == NSNotFound) {
NSLog(@"没有查找的字符串");
}
else{
NSLog(@"location = %lu, length = %lu", range.location, range.length);
}
字符串的截取##
普通截取
NSString *str1 = @"http啦啦啦";
//凡是在OC中提供的结构体,都可以使用NSMakexxx来创建
NSRange range = NSMakeRange(4, 3);
NSString *str = [str1 substringWithRange:range];
NSLog(@"%@",str);
动态截取
//1.动态获取截取的起始位置
NSUInteger location = [str rangeOfString:@"p"].location + 1;
//2.动态获取截取长度
//注意:rangeOfString是从左至右的开始查找,只要找到就不找了
NSUInteger length = [str rangeOfString:@"q"].location - location;
NSRange range = NSMakeRange(location, length);
NSString *tmpstr = [str substringWithRange:range];
NSLog(@"%@",tmpstr);
//可以从右到左开始查找
NSUInteger length = [str rangeOfString:@"q" options:NSBackwardsSearch].location - location;
//从什么地方开始截取,一直截到最后
[str substringFromIndex:(NSUInteger)];
//从开头开始截取,一直截取到xx位置
[str substringToIndex:(NSUInteger)]
字符串替换##
替换字符
NSString *str = @"w ww/b ai du/c o m";
//Occurrences:被替换的字符
//withString:用什么替换
NSString *newstr = [str stringByReplacingOccurrencesOfString:@"/" withString:@"."];
//去掉空格
NSString *newstr = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"%@", newstr);
替换首尾
去除首尾空格
NSString *str = @" www.baidu.com ";
//此对象决定方法作用
NSCharacterSet *set = [NSCharacterSet whitespaceCharacterSet];
NSString *newstr = [str stringByTrimmingCharactersInSet:set];
NSLog(@"%@", newstr);
去除首尾大写
NSString *str = @"WWWwww.baidu.comCOM";
NSCharacterSet *set = [NSCharacterSet uppercaseLetterCharacterSet];
NSString *newstr = [str stringByTrimmingCharactersInSet:set];
NSLog(@"%@", newstr);
字符串与路径##
1.判断是否是绝对路径
NSString *str = @"/Users/usersname/Desktop/abc.txt";
//1.判断是否是绝对路径
if ([str isAbsolutePath]) {
NSLog(@"YES");
}else{
NSLog(@"NO");
}
2.获取文件路径中的最后一个目录
//2.获取文件路径中的最后一个目录
//获取路径中最后一个斜杠后面的内容
NSString *str1 = [str lastPathComponent];
3.删除文件路径中的最后一个目录
//3.删除文件路径中的最后一个目录
//删除最后一个/后面的内容(包括/)
NSString *str2 = [str stringByDeletingLastPathComponent];
4.给文件添加一个目录
//4.给文件添加一个目录
//本质就是在字符串末尾加上一个/和内容
//如果有了/,就不会添加了
//如果路径后面有多个//,会自动删除多余的斜线只保留一个/
NSString *str3 = [str stringByAppendingPathComponent:@"lallaa"];
5.获取路径中文件的扩展名
//从字符串末尾开始查找.,截取第一个.后面的内容
NSString *str4 = [str pathExtension];
6.删除路径中文件的扩展名
//从字符串末尾开始查找.,删除第一个.和后面的内容
NSString *str5 = [str stringByDeletingPathExtension];
7.给文件路径添加扩展名
NSString *str6 = [str stringByAppendingPathExtension:@"txt"];
字符串的转换##
1.将字符串转换为大写
NSString *str1 = [str uppercaseString];
2.将字符串转换为小写
NSString *str2 = [str lowercaseString];
3.将字符串的首字符装换为大写
NSString *str3 = [str capitalizedString];
4.字符串与基本数据类型的转换
//如果不是int,double,float,bool,integer,longlong这些类型不要乱用
int value1 = [newstr1 intValue];
int value2 = [newstr2 intValue];
5.C语言字符串和OC字符串之间的转换
char *cstr = "lalala";
NSString *newstr = [NSString stringWithUTF8String:cstr];
const char *cstr1 = [newstr UTF8String];
NSMutableString##
继承与NSString
NSString是不可变的,NSMutableString是可变的
- 在字符串后面添加内容(方法返回为void)
- 删除字符串中的内容(方法返回为void)
- 在某处插入内容(方法返回为void)
- 替换内容
网友评论