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

#import <Foundation/Foundation.h>程序员

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

    

     @autoreleasepool {数组

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

          堆区 - 由程序员进行管理性能

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

          如下建立的都须要人工进行释放内存component

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

         strA = @"abcdefghijgk";内存

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

          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;

}

相关文章
相关标签/搜索