zoukankan      html  css  js  c++  java
  • OC Nsstring的使用

    //
    //  main.m
    //  NSString
    //
    //  Created by mj on 13-4-5.
    //  Copyright (c) 2013年 itcast. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    #pragma mark NSString的创建
    void stringCreate() {
        // char *s = "A String!"; // C语言中的字符串
        
        // 这种方式创建出来的字符串是不需要释放的
        NSString *str1 = @"A String!";
        
        NSString *str2 = [[NSString alloc] init];
        str2 = @"A String!";
        [str2 release];
        
        NSString *str3 = [[NSString alloc] initWithString:@"A String!"];
        [str3 release];
        // 不需要管理内存
        str3 = [NSString stringWithString:@"A String!"];
        
        
        NSString *str4 = [[NSString alloc] initWithUTF8String:"A String!"];
        [str4 release];
        str4 = [NSString stringWithUTF8String:"A String!"];
        
        NSString *str5 = [[NSString alloc] initWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];
        
        // 这句代码放在中间会造成2个错误:
        // 1.前面创建的字符串没有被释放
        // 2.后面创建的字符串会释放过度,造成野指针错误
        // str5 = [NSString stringWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];
        
        NSLog(@"str5:%@", str5);
        [str5 release];
        
        str5 = [NSString stringWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];
    }
    
    void test(NSString **str) {
        *str = @"123";
        // s = @"123";
    }
    
    void stringCreate2() {
        // 从文件中读取文本
        NSString *path = @"/Users/apple/Desktop/test.txt";
        // 这个方法已经过期,不能解析中文
        // NSString *str1 = [NSString stringWithContentsOfFile:path];
        
        // 定义一个NSError变量
        NSError *error;
        // 指定字符串编码为UTF-8: NSUTF8StringEncoding
        NSString *str1 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
        if (error == nil) { // 没有错误信息
            NSLog(@"读取文件成功:%@", str1);
        } else {
            NSLog(@"读取文件失败:%@", error);
        }
        
        NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/test.txt"];
        NSString *str2 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
        NSLog(@"%@", str2);
        
        NSURL *url2 = [NSURL URLWithString:@"http://www.baidu.com"];
        NSString *str3 = [NSString stringWithContentsOfURL:url2 encoding:NSUTF8StringEncoding error:nil];
        NSLog(@"%@", str3);
    }
    
    #pragma mark 字符串的导出
    void stringExport() {
        NSString *str = @"123456我是字符串!!!!";
        // 如果文件不存在,会自动创建文件
        // 如果文件夹不存在,会直接报错
        NSString *path = @"/Users/apple/Desktop/abc.txt";
        
        NSError *error;
        // 编码指定错误也会报错
        // YES代表要进行原子性操作,也就是会创建一个中间的临时文件
        [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
        if (error) {
            // [error localizedDescription]会返回主要的错误信息
            NSLog(@"写入失败:%@", [error localizedDescription]);
        } else {
            NSLog(@"写入成功");
        }
    }
    
    //void test2(int *p) {
    //    *p = 9;// a = 9;
    //}
    
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
    //        int a = 10;
    //        test2(&a);
    //        NSLog(@"%i", a);
            
            stringExport();
            
    //        NSString *s = @"456";
    //        
    //        test(&s);
    //        
    //        NSLog(@"%@", s);
        }
        return 0;
    }

    NSstring的其它用法

    #pragma mark 字符串的大小写处理
    void caseTest() {
        NSString *str = @"GuangDong";
        // 转成大写
        NSLog(@"大写:%@", [str uppercaseString]);
        // 转成小写
        NSLog(@"小写:%@", [str lowercaseString]);
        // 首字母变大写,其他字母变小写
        NSLog(@"首字母变大写:%@", [@"aGE" capitalizedString]);
    }
    
    #pragma mark 字符串的比较
    void compare() {
        // 检测字符串的内容是否相同
        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(@"右边 < 左边");
        }
    }
    
    #pragma mark 字符串的搜索
    void search() {
        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)#>];
    }
    
    #pragma mark 字符串的截取
    void subString() {
        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);
    }
    
    #pragma mark 与路径相关
    void pathTest() {
        // 快速创建一个自动释放的数组
        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"]);
    }
    
    #pragma mark 拓展名处理
    void extension() {
        NSString *str = @"/User/MJ/test.txt";
        
        NSLog(@"拓展名:%@", [str pathExtension]);
        // 删除拓展名
        NSLog(@"%@", [str stringByDeletingPathExtension]);
        // 添加拓展名
        NSLog(@"%@", [@"abc" stringByAppendingPathExtension:@"mp3"]);
    }
    
    #pragma mark 其他用法
    void other() {
        NSString *str = @"12";
        int a = [str intValue];
        NSLog(@"%i", a);
        
        // 计算字数,不是计算字符数
        NSLog(@"length=%zi", [@"我是字符串123" length]);
        
        // 取出对应的字符
        unichar c = [@"abc" characterAtIndex:0];
        NSLog(@"%c", c);
        
        // 返回C语言中的字符串
        const char *s = [@"abc" UTF8String];
        NSLog(@"%s", s);
    }
    
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
            other();
        }
        return 0;
    }
  • 相关阅读:
    利用opengl画一个水波的曲面
    Eclipse 使用OpenGL
    Javascript学习过程(二)
    Workflow Learing
    YAWL设计实例
    YAWL使用方法
    ImageJ二次开发学习纪录之初步体会
    [LeetCode 660] Remove 9
    [LeetCode 1542] Find Longest Awesome Substring
    [LeetCode 879] Profitable Schemes
  • 原文地址:https://www.cnblogs.com/liuwj/p/6900008.html
Copyright © 2011-2022 走看看