Foundation2 NSString的创建,导出,常用方法,NSMutableString

NSString的创建

// char *s = "A String!"; // C语言中的字符串
    
	// 动态方法生成,需要释放内存

    NSString *str2 = [[NSString alloc] init];
    [str2 release];// 有alloc需要释放内存
    
    NSString *str3 = [[NSString alloc] initWithString:@"A String!"];
    [str3 release];// 有alloc需要释放内存

    NSString *str4 = [[NSString alloc] initWithUTF8String:"A String!"];
    [str4 release];// 有alloc需要释放内存

   // 拼接格式 ,有alloc 需要释放
    NSString *str5 = [[NSString alloc] initWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];

OC中,看见alloc,new,copy 使用release,其他方法,不许使用release


     // 静态方法生成,需要释放内存
    // 这种方式创建出来的字符串是不需要释放的
    NSString *str1 = @"A String!";

    // 不需要管理内存,没有alloc,使用静态方法创建字符串。类似  NSString *str1 = @"A String!";
    str3 = [NSString stringWithString:@"A String!"];

    str4 = [NSString stringWithUTF8String:"A String!"];
    
   // 静态方法使用拼接格式
    str5 = [NSString stringWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];


    从文件中读取文本
    NSString *path = @"/Users/apple/Desktop/test.txt";

    // 定义一个NSError变量
    NSError *error;
    // 指定字符串编码为UTF-8: NSUTF8StringEncoding
    NSString *str1 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
    if (error == nil) { // 没有错误信息
        NSLog(@"读取文件成功:%@", str1);
    } else {
        NSLog(@"读取文件失败:%@", error);
    }
    
    // 生成文件url对象
    NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/test.txt"];
    NSString *str2 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"%@", str2);
    
   // 生成http.url对象
    NSURL *url2 = [NSURL URLWithString:@"http://www.baidu.com"];
    NSString *str3 = [NSString stringWithContentsOfURL:url2 encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"%@", str3);

字符串的导出

 NSString *str = @"123456我是字符串!!!!";
    // 如果文件不存在,会自动创建文件
    // 如果文件夹不存在,会直接报错
    NSString *path = @"/Users/apple/Desktop/abc.txt";
    
    NSError *error;
    // 编码指定错误也会报错
    // YES代表要进行原子性操作,也就是会创建一个中间的临时文件
    [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];// error是传送地址,为了改变error中的内容。使用的是指向指针的指针
    if (error) {
        // [error localizedDescription]会返回主要的错误信息
        NSLog(@"写入失败:%@", [error localizedDescription]);
    } else {
        NSLog(@"写入成功");
    }

NSString常用方法
字符串的大小写处理

    NSString *str = @"GuangDong";
    // 转成大写
    NSLog(@"大写:%@", [str uppercaseString]);
    // 转成小写
    NSLog(@"小写:%@", [str lowercaseString]);
    // 首字母变大写,其他字母变小写
    NSLog(@"首字母变大写:%@", [@"aGE" capitalizedString]);

字符串的比较

// 检测字符串的内容是否相同
    BOOL result = [@"abc" isEqualToString:@"abc"];
    NSLog(@"%i", result);
    
    // NSOrderedAscending  右边的字符串比左边大
    // NSOrderedSame  两个字符串的内容相同
    // NSOrderedDescending  左边的字符串比右边的大
    NSComparisonResult result2 = [@"abc" compare:@"Abc"];
    if (result2 == NSOrderedSame) {
        NSLog(@"两个字符串的内容相同");
    } else if (result2 == NSOrderedAscending) {
        NSLog(@"右边 > 左边");
    } else if (result2 == NSOrderedDescending) {
        NSLog(@"右边 < 左边");
    }

字符串的搜索

    NSString *str = @"123456456.txt";
    NSLog(@"是否以22开头:%i", [str hasPrefix:@"22"]);
    NSLog(@"是否以txt结尾:%i", [str hasSuffix:@"txt"]);

    // 搜索字符串
    NSRange range = [str rangeOfString:@"456"];
    // range.length == 0
    if (range.location == NSNotFound) {
        NSLog(@"不能找到");
    } else {
        NSLog(@"找到的范围是:%@", NSStringFromRange(range));
    }
    
    // 从尾部开始搜索字符串
    range = [str rangeOfString:@"456" options:NSBackwardsSearch];
    NSLog(@"%@", NSStringFromRange(range));
    
    // 指定范围进行搜索
    // [str rangeOfString:@"456" options:NSBackwardsSearch range:<#(NSRange)#>];

字符串的截取

    NSString *str = @"123456";
    
    // 从索引3开始截取到尾部(包括3)
    NSLog(@"%@", [str substringFromIndex:3]);
    
    // 从头部开始截取到索引3之前(不包括3)
    NSLog(@"%@", [str substringToIndex:3]);
    
    // 指定范围进行截取
    NSRange range = NSMakeRange(2, 3);
    NSLog(@"%@", [str substringWithRange:range]);
    
    NSString *str2 = @"a-b-c-d-5";
    NSArray *array = [str2 componentsSeparatedByString:@"-"];
    NSLog(@"%@", array);
    
    NSString *str3 =  [array objectAtIndex:0];
    NSLog(@"%@", str3);

与路径相关

   // 快速创建一个自动释放的数组
    NSMutableArray *components = [NSMutableArray array];
    [components addObject:@"Users"];
    [components addObject:@"MJ"];
    [components addObject:@"Desktop"];
    // 将数组中的所有字符串拼接成一个路径
    NSString *path = [NSString pathWithComponents:components];
    NSLog(@"%@", path);
    
    // 将路径分解成一个数组
    NSArray *cmps = [path pathComponents];
    NSLog(@"%@", cmps);
    
    // path是一个字符串常量,是不可变的
    path = @"/users/mj/test";
    // 判断是够为绝对路径(依据是前面有无/)
    NSLog(@"%i", [path isAbsolutePath]);
    NSLog(@"最后一个目录:%@", [path lastPathComponent]);
    // 删除最后一个目录
    NSLog(@"%@", [path stringByDeletingLastPathComponent]);
    // 在最后面拼接一个目录
    NSLog(@"%@", [path stringByAppendingPathComponent:@"abc"]);

拓展名处理

    NSString *str = @"/User/MJ/test.txt";
    
    NSLog(@"拓展名:%@", [str pathExtension]);
    // 删除拓展名
    NSLog(@"%@", [str stringByDeletingPathExtension]);
    // 添加拓展名,是直接在最后添加。如:"/User/MJ/test.txt"添加后为:"/User/MJ/test.txt.mp3"
    NSLog(@"%@", [@"abc" stringByAppendingPathExtension:@"mp3"]);

其他用法

    NSString *str = @"12";
    int a = [str intValue];
    NSLog(@"%i", a);
    
    // 计算字数,与C语言不同,不是计算字符数(如1个中文占2个字符,字数是1个)
    NSLog(@"length=%zi", [@"我是字符串123" length]);
    
    // 取出对应的字符
    unichar c = [@"abc" characterAtIndex:0];
    NSLog(@"%c", c);
    
    // 返回C语言中的字符串
    const char *s = [@"abc" UTF8String];
    NSLog(@"%s", s);


NSMutableString
 // 预先分配10个字数的存储空间,这里只是一开始分配10个,之后还是可以增加或减少的
    NSMutableString *str = [[NSMutableString alloc] initWithCapacity:10];
    // 设置字符串内容
    [str setString:@"1234"];
    
    // 拼接一个字符串
    [str appendString:@"567"];
    // 拼接字符串
    [str appendFormat:@"age is %i and height is %.2f", 27, 1.55f];
    
    // 替换字符串
    NSRange range = [str rangeOfString:@"height"];
    //NSRange range = NSMakeRange(7, 3);
    [str replaceCharactersInRange:range withString:@"no"];
    
    // 插入字符串
    [str insertString:@"abc" atIndex:2];
    
    // 删除字符串
    range = [str rangeOfString:@"age"];
    [str deleteCharactersInRange:range];
    
    NSLog(@"%@", str);
    
    // 释放对象,有alloc需要release
    [str release];



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dwt1220

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值