zoukankan      html  css  js  c++  java
  • 字符串常用函数

    1、创建一个字符串对象:

    NSString *str3 = [[NSString alloc] initWithString:@"A String!"];  [str3 release];
    str3 = [NSString stringWithString:@"A String!"]; 
    // 不需要管理内存,系统自带类用静态方法创建的对象系统自动释放内存。其中initWithString: 是直接赋值一个OC的字符串。 stringWithString:方法是initWithString:相应的静态方法;重新开内存并赋值。
    
    NSString *str4= [[NSString alloc] initWithUTF8String:"A String!"];    [str4 release];
    str4 = [NSString stringWithUTF8String:"A String!"];   
    // 不需要管理内存,系统自带类用静态方法创建的对象系统自动释放内存。其中initWithUTF8String: 是把C语言中的字符串转换成OC形式并赋值。stringWithUTF8String:是initWithUTF8String: 相应的静态方法;重新开内存并赋值。
    
    NSString *str5 = [[NSString alloc] initWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];    
    [str5 release];
    str5 = [NSString stringWithFormat:@"My age is %i and height is %.2f", 19, 1.55f]; 
    // 不需要管理内存,系统自带类用静态方法创建的对象系统自动释放内存。其中initWithFormat: 是按照某种格式赋值。stringWithFormat: 是initWithFormat: 相应的静态方法;重新开内存并赋值。

    2、从文件中读取文本

    NSString *path = @"/Users/apple/Desktop/test.txt";    //下面这个方法已经过期,不能解析中文
    NSString*str1=[NSString stringWithContentsOfFile:path];
    NSLog(@"%@", str1);
    //stringWithContentsOfFile:该方法可以读取设定目录下的文件中的内容并形成字符串,可以输出显示。
    
    // 定义一个NSError变量
    NSError *error;
    // 指定字符串编码为UTF-8: NSUTF8StringEncoding
    NSString *str1 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
    if (error == nil) { // 没有错误信息
        NSLog(@"读取文件成功:%@", str1);
    } else {
        NSLog(@"读取文件失败:%@", error);
    }
    //stringWithContentsOfFile: 该方法以字符串编码为UTF-8格式读取设定目录下的文件中的内容并形成字符串;&error是如果以字符串编码为UTF-8格式读取成功则error为原始值nil,若不成功则给error赋值异常原因。
    
    NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/test.txt"];
    // file://固定格式,读取本地文件。
    NSString *str2 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"%@", str2);
        
    NSURL *url2 = [NSURL URLWithString:@"http://www.baidu.com"];
    // http://固定格式,后面跟的是网址(其实就是文本)。
    NSString *str3 = [NSString stringWithContentsOfURL:url2 encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"%@", str3);
    //URLWithString:用于封装NSURL,里面封装的是文件路径或远程链接地址。
    //stringWithContentsOfURL:该方法用于以相应的格式(如:NSUTF8StringEncoding)读取文件(本地的或是远程链接的)。

    3、字符串导出(写入)存储介质上的文件中

    void stringExport() {
        NSString *str = @"123456我是字符串!!!!";
        NSString *path = @"/Users/apple/Desktop/abc.txt";
        // 如果abc.txt文件不存在,会自动创建文件; 如果路径中的文件夹不存在,会直接报错。
        NSError *error;
    [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
    // (encoding:NSUTF8StringEncoding)编码格式指定错误也会报错
    // YES代表要进行原子性操作,也就是会创建一个中间的临时文件存储导出的字符串,再剪切临时文件中的内容进路径指定的文件下;NO代表要进行非原子性操作,也就是不会创建中间的临时文件,而是直接把要导出的字符串直接写入进路径指定的文件中;YES比NO安全性更高。writeToFile:方法是把字符串写入进后面指定路径中的文件.
        if (error) 
        {
                NSLog(@"写入失败:%@", [error localizedDescription]);
        // [error localizedDescription]会返回主要的错误信息,error调用localizedDescription这个方法会把error中的异常信息进行精确提取。
        } else {
            NSLog(@"写入成功");
        }
    }

    4、字符串转化:

    NSString *str = @"hello";
    const char *p = [str UTF8String];  //UTF8String 方法用来将OC字符串@"abc"转换为C语言中的字符串,返回值类型为C语言中的字符类型char。
    
    NSString * ptr = [str2 uppercaseString];    //将字符串中的所有小写字符转换成大写,不改变原来的字符串
    
    ptr = [str1 lowercaseString];    //将字符串中的所有大写字符转换成小写,不改变原来的字符串
    
    ptr = [str3 capitalizedString];    //将字符串中出现的第一个字母转换成大写,其余字母小写

    5、字符串比较

    BOOL ret =  [str1 isEqualTo:str2];    //比较两个字符串是否相等,相等返回YES(1),不相等返回NO(0)   (BOOL   YES(1)  NO(0))
    
    BOOL result = [@"abc" isEqualToString:@"abc"];    //isEqualToString:方法 检测字符串的内容是否相同。
    NSLog(@"%i", result);
    
    // NSOrderedAscending  升序:右边的字符串比左边大
    // NSOrderedSame  两个字符串的内容相同
    // NSOrderedDescending  降序:左边的字符串比右边的大
    //上面三个值为下面compare:方法的三个返回值;compare:方法为不忽略大小写的字符串比较方法。
    NSComparisonResult result2 = [@"abc" compare:@"Abc"];
    if (result2 == NSOrderedSame) {
        NSLog(@"两个字符串的内容相同");
    } else if (result2 == NSOrderedAscending) {
        NSLog(@"右边 > 左边");
    } else if (result2 == NSOrderedDescending) {
        NSLog(@"右边 < 左边");
    }
     
    long ret1 = [str1 compare:str2];    //比较两个字符串的大小,str1大 返回1  相等返回0   小于返回-1
     
    long ret2 = [str1 caseInsensitiveCompare:str2];    //不区分大小写比较字符串大小
    //-(NSComparisonResult)caseInsensitiveCompare:(NSString *)string  方法忽略大小写进行比较,返回值与compare:一致。

    6、字符串的搜索

    NSString * str = @"www.1000phone.com";
    BOOL ret = [str hasPrefix:@"www"];//判断字符串是否以指定字符串开头
    BOOL ret1 = [str hasSuffix:@".txt"];//判断字符串是否以指定的字符串结尾
    //hasPrefix:方法是判断某个字符串是否以另一个字符串打头,返回值为BOOL值;hasSuffix:方法是判断某个字符串是否以另一个字符串结尾,返回值为BOOL值。
    
    NSRange range = [str rangeOfString:@"456"];// 从头部开始搜索字符串, rangeOfString:方法是检索一个字符串str中是否包含另一个字符串@"456",返回值为NSRange类型。
    if (range.location == NSNotFound) {    //判断条件还可以是: range.length == 0;NSNotFound代表如果字符串str中不包含另一个字符串@"456",那么返回值range.location == NSNotFound。
        NSLog(@"不能找到");
    } else {
        NSLog(@"找到的范围是:%@", NSStringFromRange(range));
    }// NSStringFromRange(range)代表把range这个结构体转换为字符串形式。
    
    range = [str rangeOfString:@"456" options:NSBackwardsSearch]; 
    // options:后面设置一个参数,NSBackwardsSearch代表从尾部(倒序)开始搜索字符串,整体语句为在str字符串中从尾部开始搜索@"456"这个字符串。    
    range =[str rangeOfString:@"456" options:NSBackwardsSearch range:(NSRange)]; 
    // 此语句为更精确的范围搜索语句,range:后面的参数(NSRange)为设定的搜索范围(如:range:NSMakeRange(2, 3)),整体语句为在str字符串中从尾部开始在(NSRange)这个范围内搜索@"456"这个字符串,整体语句返回值为NSRange类型。 

    7、字符串的截取

    NSString *str = @"123456";
    NSLog(@"%@", [str substringFromIndex:3]); 
    //substringFromIndex:方法 是从str字符串索引3开始截取到尾部(包括3)。
    
    NSLog(@"%@", [str substringToIndex:3]); 
    //substringToIndex:方法 是从str字符串头部开始截取到索引3之前(不包括3)。
    
    NSRange range = NSMakeRange(2, 3);
    NSLog(@"%@", [str substringWithRange:range]); 
    //substringWithRange:方法 是从str字符串指定范围range进行截取。
    
    NSString *str2 = @"a-b-c-d-5";
    NSArray *array = [str2 componentsSeparatedByString:@"-"]; 
    //componentsSeparatedByString:方法 是把字符串str2通过字符串@"-"进行分割,返回值是一个集合。
    NSLog(@"%@", array);//把集合以字符串的形式打印。
    
    NSString *str3 =  [array objectAtIndex:0];
    //objectAtIndex:方法返回值是对象类型 是从array这个集合中取出相应索引0对应的对象。

     unichar c = [@"abc" characterAtIndex:0];  //characterAtIndex: 方法用来取出字符串@"abc"对应索引0的字符,返回值类型为unichar。

    8、与路径相关的

    NSMutableArray *components = [NSMutableArray array];    //快速创建一个自动释放的可变数组(NSMutableArray)
    [components addObject:@"Users"];
    [components addObject:@"CJ"];
    [components addObject:@"Desktop"];  //向可变数组中添加元素。
    
    NSString *path = [NSString pathWithComponents:components];
    //pathWithComponents:为静态方法所以用类名NSString调用 将components数组中的所有元素(字符串)拼接成一个路径,路径分隔符”/”是自动生成的。
    
    NSArray *cmps = [path pathComponents];    // pathComponents方法将路径path按路径分隔符”/”分解成一个数组;是pathWithComponents:方法的逆向过程。
    
    path = @"/users/cj/test";  //path是一个字符串常量,是不可变的。   
    NSLog(@"%i", [path isAbsolutePath]); // isAbsolutePath方法是判断path是否为绝对路径(依据是前面有无/,有/的是绝对路径,没有/的是相对路径)。
    
    NSLog(@"最后一个目录:%@",[path lastPathComponent]);
    //lastPathComponent方法用来取出path路径中最后一个目录。
    
    NSLog(@"%@", [path stringByDeletingLastPathComponent]);
    //stringByDeletingLastPathComponent方法用来删除path最后一个目录。
    
    NSLog(@"%@",[path stringByAppendingPathComponent:@"abc"]);
    //在path路径最后面拼接一个目录@"abc"。
    
    NSString *home = NSHomeDirectory(); // 获取应用程序沙盒沙箱目录
    NSString *path = [home stringByAppendingString:@"/Documents"];
    // stringByAppendingString:方法用于拼接字符串home与@"/Documents"连接起来。
    
    NSString *path = [home stringByAppendingPathComponent:@"Documents"];
    // stringByAppendingPathComponent:方法好处在于目录中不区分或着/,系统自动在路径字符串home与@"Documents"之间加上或者/,拼成完整路径。
    
    //建议使用如下方法动态获取路径,此方法不受路径变化与程序员输入有误而影响,会直接寻找到Documents文件夹
    NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
    // NSUserDomainMask 在用户目录下查找
    // YES 代表用户目录的~
    // NSDocumentDirectory 查找Documents文件夹
    
    // 拼接文件路径
    NSString *path = [doc stringByAppendingPathComponent:@"abc.plist"];

    9、扩展名处理

    NSString *str = @"/User/CJ/test.txt";
    NSLog(@"拓展名:%@", [str pathExtension]);
    //pathExtension方法用来取得路径str的拓展名。
    
    NSLog(@"%@", [str stringByDeletingPathExtension]);
    //stringByDeletingPathExtension方法用来删除str中文件的拓展名.txt
    
    NSLog(@"%@",[str stringByAppendingPathExtension:@"mp3"]);
    //stringByAppendingPathExtension:方法 是在str路径最后添加拓展名.mp3

    10、字符串转换为基本数据类型

    NSString *str = @"123";
    int a = [str intValue];    //intValue方法用来把数值型字符串转换为int型数值。
    [str floatValue];    //将数字串转化成float型
    [str doubleValue];    //将数字串转化成double型
    
    NSLog(@"length=%zi", [@"我是字符串123" length]);
    //length 方法用来计算字符串@"我是字符串123"的字数,不是计算字符数。 

    11、NSMutableString可变字符串,继承于NSString可以使用NSString的所有方法

    NSMutableString * str =  [[NSMutableString alloc]initWithString:@"hello"];//将不可变的字符串转换为可变的字符串
    
    NSMutableString *str = [[NSMutableString alloc] initWithCapacity:10]; //initWithCapacity: 方法用来给字符串str预留10个字数的存储空间。
    
    [str setString:@"1234"];// 设置字符串内容
    [str appendString:@"567"];// 在原字符串str后面拼接一个字符串@"567"。
    [str appendFormat:@"age is %i and height is %.2f", 27, 1.55f]; 
    //appendFormat: 方法在原字符串str后面拼接字符串@"age is %i and height is %.2f"。
    
    NSRange range = [str rangeOfString:@"height"];
    // rangeOfString: 方法是用来确定子字符串@"height"在字符串str中的范围。

    [str replaceCharactersInRange:range withString:@"no"]; //replaceCharactersInRange: 方法用来把字符串@"no"替换字符串str中指定范围range 中的子字符串。 [str insertString:@"abc" atIndex:2]; //insertString: 方法用来在字符串str索引为2(不要越界)的地方插入字符串@"abc"。 [str deleteCharactersInRange:range]; //deleteCharactersInRange: 方法用来删除字符串str中指定范围range中的子字符串。
  • 相关阅读:
    我在硅谷时候写的文章
    快速上手ABP
    朝花夕拾
    ABP问题速查表
    被低估的.net(上)
    申请Office 365一年免费的开发者账号攻略(2018年10月份版本)
    office365的开发者训练营,免费,在微软广州举办
    数据恢复顾问(DRA)
    使用RMAN对数据文件进行恢复
    Linux环境下利用句柄恢复Oracle误删除的数据文件
  • 原文地址:https://www.cnblogs.com/CJDog/p/4962107.html
Copyright © 2011-2022 走看看