NSString

NSString创建方法
  1. 通过字符串常量创建:存储在字符串常量区,如果创建多个字符串常量,且内容一致,那么多个对象会指向同一块存储空间

    NSString *str1 = @"作者是个大帅逼";
  2. 通过alloc init创建:存储在堆区

    NSString *str2 = [[NSString alloc] initWithFormat:@"作者是个大帅逼"];
  3. 通过类工厂方法创建:存储在堆区

    NSString *str2 = [NSString stringWithFormat:@"作者是个大帅逼"];
  4. 注意:一般情况下,只要是通过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是可变的

  1. 在字符串后面添加内容(方法返回为void)
  2. 删除字符串中的内容(方法返回为void)
  3. 在某处插入内容(方法返回为void)
  4. 替换内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值