五.Foundation框架(2)--NSString/NSMutableString

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

    

     @autoreleasepool {

          栈区 - 由系统进行管理,程序员无法操控

          堆区 - 由程序员进行管理

         NSString *str = @"abcdefg";     将会存放在栈区,不需要主动释放内存

          以下创建的都需要人工进行释放内存

         NSString *strA = [[NSString alloc]init];

         strA = @"abcdefghijgk";

         NSString *strB = [[NSString alloc]initWithString:strA];

          c语言字符串转换为oc字符串

         char *c = "abv";

         NSString *strC = [[NSString alloc]initWithUTF8String:c];

         

          以下创建的都会自动释放 原理是会在方法调用之后加上[xx autorelease]

         NSString *strD = [NSString stringWithFormat:@"abcd%d",3];

         NSString *strE = [NSString stringWithString:strD];

         NSString *strF = [NSString stringWithUTF8String:c];

         

          子串系列

          [strB substringFromIndex:1]; 从某个位置到结束的所有字符串

          [strB substringToIndex:1];  从开始到某个位置的所有字符串

          [strB substringWithRange:(NSRange){0,1}]; 截取某个范围内的字符串

          [strB componentsSeparatedByString:@"/"];   以 '/' 为标准进行字符串切割,然后切割出来的每一部分字符串放入到数组当中

          比较系列

         [strB isEqualToString:@"b"];    判断两个字符串是否相等

         NSComparisonResult cResult = [strB compare:strA]; 1 前者大 0两者相等 -1前者小

         if(cResult == NSOrderedAscending)

             NSLog(@"left<right");

         else if(cResult == NSOrderedDescending)

             NSLog(@"left>right");

         else if(cResult == NSOrderedSame)

             NSLog(@"left==right");

         

          文件读取系列

         NSString *path = @"/Users/whunf/Desktop/IT12/OCWithProperty/OCWithProperty/office资料.c";

         NSString *strG = [[NSString alloc]initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

          首字母大写,其余小写

         str = @"HEllo woRld";

         NSLog(@"原来的:%@,转换后的:%@",str,[str capitalizedString]);

          是否包含

         NSRange rng = [strB rangeOfString:@"fe"];

          判断xx是否为空

         if(rng.location == NSNotFound)

             NSLog(@"not found");

          将结构体包装成类,便于输出

         NSLog(@"%@",NSStringFromRange(rng));

          NSLog(@"%ld,%ld",rng.location,rng.length);

         str = @"1";

          类型转换

         int intValue = [str intValue];

         NSInteger integerValue = [str integerValue];

         float floatValue = [str floatValue];

         double doubleValue = [str doubleValue];

         _Bool boolValue = [str boolValue];

         long long longValue = [str longLongValue];

         const char *cs = [str UTF8String];

          字符串长度

         NSInteger len = [str length];

          转换成大写

         str = @"b";

         NSLog(@"%@",[str uppercaseString]);

          转换成小写

         str = @"B";

         NSLog(@"%@",[str lowercaseString]);

          判断是否以xx为开头

         BOOL ret = [path hasPrefix:@"/Users"];

         NSLog(@"%d",ret);

          判断是否以xx为结尾

         ret =[path hasSuffix:@".d"];

          NSLog(@"%d",ret);

          是否包含某个字符串

            [str containsString:@“d"];

    }

    return 0;

}

上面讲解了,NSString的常用方法。

       下面是NSMutableString的常用方法:

         NSMutableString 可变

             单词记忆

         追加 append  插入insert  删除 delete remove

         方位/下标 index  坐标 location  格式 Format  

 

        NSMutableString *mStr = [[NSMutableString alloc]init];

         分配字符串大小,提升性能,但不是不可以超过这个范围。

        NSMutableString *mString = [[NSMutableString alloc]initWithCapacity:10];

         mStr = @"def"; 可变字符串不能进行直接赋值

        NSLog(@"%@",mStr);

         字符串添加系列

         在某个位置插入字符串

        [mStr insertString:@"abc" atIndex:0];

        NSLog(@"%@",mStr);

         在原有的字符串后面进行追加内容

        [mStr appendString:@"def"];

        NSLog(@"%@",mStr);

         在原有的字符串后面格式化后追加内容

        [mStr appendFormat:@"deg%d",3];

        NSLog(@"%@",mStr);

         删除某个范围内的字符

        [mStr deleteCharactersInRange:(NSRange){0,3}];

        NSLog(@"%@",mStr);

 

实例讲解:

 1.创建一个字符串 "OCWith/OCWithProperty/office.c",利用string当中的子串截取方法,将每个/之前的单词截取出来,放入到数组当中

 

int main(int argc, const char * argv[]) {

     @autoreleasepool {

NSString *str =@"OCWith/OCWithProperty/office.c";

         int loc = 0;                截取开始的坐标

         int len = 0;                截取的长度

          创建一个数组,用于储存截取出来的字符串

         NSArray *arr = [NSArray array];

         for (int i = 0; i<str.length; i++) {

              获取当前位置的字符

             if([str characterAtIndex:i] == '/')

             {

                  获取range范围内的字符串

                 NSString *temp = [str substringWithRange:(NSRange){loc,len}];

                  将获取的字符串组合到数组中

                 arr = [arr arrayByAddingObject:temp];

                 loc = i+1;          截取开始的位置变化

                 len = -1;           长度重设

             }

             len++;

         }

         NSLog(@"%@",arr);

          ----------------------------------

          通过自带的方法实现字符串截取

         arr = [str componentsSeparatedByString:@"/"];

         NSLog(@"%@",arr);

         

         2.创建一个方法,用来获取文件名称和扩展名

          获取文件名称

         NSString *temp = [str substringWithRange:(NSRange){loc,len}];

         NSString *fileName = @"";       用于储存文件名称

         NSString *fileType = @"";       用于储存文件类型

         loc = 0;

         len = 0;

         for (int i = 0; i<temp.length; i++) {

              获取当前位置的字符

             if([temp characterAtIndex:i] == '.')

             {

                  获取range范围内的字符串

                 fileName = [temp substringWithRange:(NSRange){loc,len}];

                 loc = i+1;

                 len = -1;

             }

             len++;

         }

         fileType = [temp substringWithRange:(NSRange){loc,len}];

         NSLog(@"文件名称:%@,文件类型:%@",fileName,fileType);

    }

    return 0;

}

转载于:https://my.oschina.net/MrP/blog/749854

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值