Obbjective-C-Foundation框架中的NSString与NSMutableString的用法

Foundation框架

  框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易.

  Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组,字典和集合,其他功能包括处理日期和时间、内存管理、处理文件系统、存储(或归档)对象、处理几何数据结构(如点和长方形)

显示隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool true

隐藏隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool false

---------------NSString的用法

    1).直接创建方式:

    NSString *str = @"abc";

 

    2).格式化创建:

    NSString *st2 = [NSString stringWithFormat:@"%@", @"jack"];

    NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", 10];

   3).文本编码:

    中文 :GBK(3个字节)     GB2312(3个字节)

    UTF - 8:国际通用编码(2个字节)

    4). 字符串写入文件:  

                                     

       NSError *err;//错误对象

    [str writeToFile:@"/Users/zhaoxiaohu/Desktop/" atomically:YES  encoding:NSUTF8StringEncoding error:&err];

     if (err != nil) {

        NSLog(@"写入失败!,%@",err);

    }else{

          NSLog(@"写入成功");

    }

    5).字符串从文件读取:

   NSError *err;

    NSString *str = [NSString stringWithContentsOfFile:@"/Users/zhaoxiaohu/Desktop/str.txt" encoding:NSUTF8StringEncoding error:&err];

    if (err != nil) {

            NSLog(@"读取失败!,%@",err);

        }else{

            

            NSLog(@"读取成功");

            NSLog(@"%@",str);

        }

 

    6).字符串比较函数:

    NSComparisonResult result = [str1 compare:str2];

    //比较的时候,不区分大小写,参考字符的个数进行比较

    NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];

    返回值:

    NSOrderedAscending(str1<str2)升序

    NSOrderedDescending(str1>str2)降序

    NSOrderedSame(str1 = str2)相等

    NSString *str1 = @"abc";   // a 97

    NSString *str2 = @"abc";   // A 65

    

    //取出每个字符的ASCII码值 ,比较ASCII码值大小

    //compare方法比较大小

    //compare 默认的区分大小写的

    //compare 这个函数,不能增加条件

       NSComparisonResult result = [str1 compare:str2];

    

    //比较的时候,不区分大小写,参考字符的个数

    NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];

        switch (result) {

        case NSOrderedAscending:

            NSLog(@"str1 < str2 升序");

            break;

        case NSOrderedDescending:

            NSLog(@"str1 > str2 降序");

            break;

        case NSOrderedSame:

            NSLog(@"str1 == str2 ");

            break;

           default:

            break;

    }

      7). 判读字符串是否相等:

    NSString *str1 = @"abc";

    NSString *str2 = @"abc";

    str1 == str2       比较的是地址  (==比较的是字符串的地址)

    [str1 isEqualToString:str3],比较的是内容,区分大小写(这个方法非常常用)

  NSString *str1 = @"abc";

    NSString *str2 = @"abc";

 

//地址的比较

        // "==" 不能够判断字符串是否相等的

        

        //判断字符串内容真正是否相等,使用是

        //isEqualToString:

        //注意:他是区分大小写的

        

        if ([str1 isEqualToString:str3]) {

            NSLog(@"相等");

        }else{

            

            NSLog(@"不相等");

        }

        

  8). 检测字符串前后缀:

    NSString *url = @"http://asdfasdfasdfaasdfadsfaf";

    [url hasPrefix:@"http://"]; 字符串是否以http:开头//检测前缀

    NSString *imgName = @"logo.jpg";

    [imgName hasSuffix:@".jpg"]; 检测字符串是否以.jpg结尾//检测后缀

   NSString *url =@"http://sjhasfjkfsjfhskfsbbbbb";
        if( [url hasPrefix:@"http"]){
            NSLog(@"是网址");
            if ([url hasSuffix:@".jpg"]) {
                NSLog(@"是图片");
            }else{
                NSLog(@"不是");
            }
        
        }

    9).查找字符串:

格式:

        NSRange range = [str1 rangeofString:str2]; //str1 中找str2

    

NSString *url =@"http://sjhasfjkfsjfhskfsbbbbb";

 

//在一个字符串中查找另一个字符串出现的手位置

    NSRange range = [str rangeOfString:@"sj"];

    //NSNotFound 是一个最大的long 无符号数

    //如果查找不到 range.location 是一个最大的long 无符号数

    //range.location 表示字符串首次出现的位置

    //range.length   表示子字符串的长度

    if (range.location != NSNotFound) {

        NSLog(@"位置:%lu,长度:%lu",range.location,range.length);

    }else{

      NSLog(@"没有查找到");

    }

 

-----------------字符串的截取和替换

    1,从指定位置from开始(包含起始位置)到尾部

        - (NSString *)substringFromIndex:(NSUInteger)from;

     2,从字符串的开头一直截取到指定的位置to,不包含结束位置

        - (NSString *)substringToIndex:(NSUInteger)to;

    3,按照所给出的NSRange从字符串中截取子串

        - (NSString *)substringWithRange:(NSRange)range;

NSString *str = @"http://www.baidu.com";

    //1) 从xx位置开始,到最后结束(包含xx这个位置的字符)

    NSString *str1 = [str substringFromIndex:5];

    NSLog(@"str1 = %@",str1);

    //2) 从开始位置,到xx位置结束(不包含xx这个位置)

    NSString *str2 = [str substringToIndex:5];

    NSLog(@"str2 = %@",str2);

     //3) 截取一个范围 range

    NSRange r1 = {3,4};

    NSString *str3 = [str substringWithRange:r1];

    NSLog(@"str3 = %@",str3);

    

    4,字符串截取练习(获取itcast标签中的内容)

        

NSString *str = @"<itcast>乔布斯</itcast>";

        //  @">"  loc+1

        NSUInteger loc = [str rangeOfString:@">"].location + 1;  //"传"得位置

        //  @"</" loc

        NSUInteger len = [str rangeOfString:@"</"].location - loc;  //要截取的字符的长度

        // 构建 ruange

        NSRange r2 = NSMakeRange(loc, len);

        // 截取

        NSString *subStr = [str substringWithRange:r2];

               NSLog(@"subStr = %@",subStr);

    5,字符串替换                                               

str stringByReplacingOccurrencesOfString:@"源字符串中的内容" withString:@"要替换成新的内容"

NSString *str =@"asdfsdafasdfdasdfsa";

      //把a替换成 *

        NSString *newStr = [str stringByReplacingOccurrencesOfString:@"a" withString:@"*"];

        NSLog(@"newStr = %@",newStr);

 1、获取字符串的每个字符

- (NSUInteger)length; 返回字符串的长度(有多少个字符,无论中文字符、英文字符等等,一个字符就是一个字符)

- (unichar)characterAtIndex:(NSUInteger)index; 返回index位置对应的字符

 NSString *str = @"ios.itcast.cn";

    //1、获取字符串的长度
    //调用字符串的length方法
    //str.length  ---->  [str length];
    NSLog(@"%ld",str.length);

    //2、获取字符的每一个字符
    unsigned long len = str.length;

    for (int i=0; i<len; i++) {
        unichar c = [str characterAtIndex:i];
        printf("%c  ",c);
    }

 三,字符串和其他数据类型转换

    1,和基本数据类型的转换

        - (double)doubleValue;

        - (float)floatValue;

        - (int)intValue;

        - (BOOL)boolValue;

 NSString *s1 = @"12";    //12+2
    //        s1+2;
    NSString *s2 = @"2.3";
    NSString *s3 = @"345.678";

    //把字符串转换为 int类型
    int n1 = [s1 intValue];
    NSLog(@"n1 = %d",n1*34);

    //字符串转换为float
    float f1 = [s2 floatValue];
    NSLog(@"f1 = %f",f1+3);

    //把字符串转换为double类型
    double d1 = [s3 doubleValue];
    NSLog(@"d1 = %f",d1+3);

    2,C字符串转OC 字符串

      

  char *s = "zhangsanfeng";

        NSString *str = [NSString stringWithUTF8String:s];

  3,OC字符串转C字符串

        

NSString *str2 = @"zbz";

        const char *s1 = [str2 UTF8String];

 

  4,去除字符串首尾的空格

     

   NSString *str = @" itc ast ";

        NSCharacterSet *set =[NSCharacterSet whitespaceCharacterSet];

        NSString *newStr = [str stringByTrimmingCharactersInSet:set];

 

四,通过NSURL读写字符串

    1,URL介绍

        URL的全称是Uniform Resource Locator(统一资源定位符).

        URL是互联网上标准资源的地址.

    2,URL格式

        基本URL包含:协议、主机域名(服务器名称IP地址)、路径

        举例: http://ios.itcast.cn/ios/images/content_25.jpg

        可以简单认为: URL == 协议头://主机域名/路径

    3,通过URL读写字符串

        构建URL

        NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/str.txt"];//需要手动加file://协议头

        通过文件路径创建(默认就是file协议的)

        NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/str.txt"];//自动会将file://协议头加上

        NSString *str = @"$10000000";

        1),写入字符串

            [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil]

 2),读取字符串

NSString *str2 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

 五,NSMutableString的介绍和使用

    1, NSMutableString类继承NSString类

    2,NSMutableString和NSString的区别:

        NSString是不可变的, 里面的文字内容是不能进行修改的;

        NSMutableString是可变的, 里面的文字内容可以随时更改;

        NSMutableString能使用NSString的所有方法.(继承)

    3, 可变和不可变的概念:

        不可变: 指的是字符串在内存中占用的存储空间固定,并且存储的内容不能发生变化;

        可变:   指的是字符串在内存中占用的存储空间可以不固定,并且存储的内容可以被修改;

    4,使用:

         NSMutableString *str2 = [NSMutableString stringWithFormat:@"Jack"];

 1),添加:

                [str2 appendString:@"&Rose"];//追加

                [str appendFormat:@"http://www.baidu.com/%d",100];//格式化的添加字符串

 

  2),在指定的位置插入一个字符串:

                

 [str insertString:@"p://" atIndex:3];

  3),删除一部分字符串:

                 [str deleteCharactersInRange:NSMakeRange(3, 4)];

4),替换字符串的一部分内容

                 

[str replaceCharactersInRange:NSMakeRange(11, 5) withString:@"itcast"];

 使用注意:

        1),不能将不可变的字符串赋值给可变的字符串;

            NSMutableString *str = [NSString stringWithFormat:@"abc"];

    

原文地址:https://www.cnblogs.com/yilizhijiaotianxiashao-yincaiersanshijianduo/p/4727500.html