NSString 和nNSMutableString 的常见使用

NSString 的使用:

#import <Foundation/Foundation.h>

 

 

#pragma mark 大小写转换

void caseTest(){

    NSString *str = @"GuangDong";

    // 转成大写

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

    // 转成小写

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

    // 首字母大写,其他字母都变成小写

    [@"age" capitalizedString]; // 这样也可以

    NSLog(@"首字母大写:%@",[str 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(@"左边 > 右边");

    }

    // 忽略大小写,来进行比较大小,返回值类型和上面一样

NSComparisonResult result3 = [@"abc" caseInsensitiveCompare:@"aBc"];

    if (result3 == NSOrderedSame){

        NSLog(@"两边的字符串大小相同");

    } else if(result3 == NSOrderedAscending){

        NSLog(@"左边 < 右边");

    }else if (result3 == NSOrderedDescending){

        NSLog(@"左边 > 右边");

    }

    

}

#pragma mark 字符串的搜锁索

void searchStr(){

    NSString *str = @"1234df34dfwg5234.txt";

    // 返回的是BOOL 类型的数值

    NSLog(@"是否以22开头的:%i",[str  hasPrefix:@"22"]);

    NSLog(@"是否以txt结尾的的:%i",[str  hasSuffix:@"txt"]);

    

    // 搜素字符串(从前面开始搜索)

    NSRange range = [str rangeOfString:@"34df"];

    // rang.length == 0; NSNotFound = long int 的最大值

    if (range.location == NSNotFound) {

        NSLog(@"不能找到");

    } else {

        NSLog(@"找到的范围是:%@",NSStringFromRange(range));

    }

    

    // 搜索字符串(从结尾开始搜索)

    /* NSBackwardsSearch 表示从后面开始搜索

     NSLiteralSearch 表示从前面开始逐字的(Literal)搜索

     */

    range = [str rangeOfString:@"34df" options:NSBackwardsSearch];

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

    

    // 制定范围搜索

    NSRange range1 = {.location = 8,.length = 12};

   range =  [str rangeOfString:@"34df" options:NSBackwardsSearch range:range1];

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

    

    

}

#pragma mark 字符串的截取(截串)

void subString(){

    NSString *str = @"25645dsbcaegr1rwyevw6r351238fbeyf3158";

    

    // 从索引20开始 截取字符串到尾部 输出结果:subString---6r351238fbeyf3158

    NSLog(@"subString---%@",[str substringFromIndex:20]);

    // 从头部开始截取到索引6之前 输出结果:subString---25645d

     NSLog(@"subString---%@",[str substringToIndex:6]);

    // 截取中间一段 输出结果:645dsb

    NSRange range = NSMakeRange(2, 6);

    NSLog(@"subString---%@",[str substringWithRange:range]);

    

    // 以逗号为分割符分成6部分,并且用数组或集合接收

    NSString *str2 = @"1-2-3-4-b-a";

    // components 元素的意思,SeparatedByString 以某某为分割

    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 pathWithComponents:components];

//    NSLog(@"components---%@",components);

    NSString *path = [NSString pathWithComponents:components];

    NSLog(@"components---%@",path);

    // 将一个路径分解成一个装着每一个目录的NSArry

    NSArray *cmps = [path pathComponents];

    NSLog(@"%@",cmps);

    

    // path 是一个常量字符串,是不可变的

    path = @"Users/MJ/Desktop/test";

    // 判断是否为绝对路径(判断的依据就是看前面是否有 /)

    NSLog(@"是否为绝对路径%i",[path isAbsolutePath]);

    // 获得最后一个目录

    NSLog(@"最后一个目录是:%@",[path lastPathComponent]);

    // 是否删除最后一个文件

    NSLog(@"删除最后一个目录得到路径:%@",[path stringByDeletingLastPathComponent]);

    // 在后面再加上一个文件

    NSLog(@"再拼接一个目录%@",[path stringByAppendingPathComponent:@"abc.txt"]);

}

#pragma mark 拓展名处理

void extension(){

    NSString *str = @"Users/MJ/Desktop/test.txt";

    

    // 获得拓展名

    NSLog(@"拓展名:%@", [str pathExtension]);

    // 删除拓展名

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

    // 在后面加上一个拓展名

    NSLog(@"%@",[@"abc" stringByAppendingPathExtension:@"mp3"]);

    NSLog(@"%@",[str stringByAppendingPathExtension:@"mp3"]);

 

    

}

#pragma mark 其他用法

void other(){

    NSString *str = @"34"; // 如果不是数字的话转成的 int double 值为 0

    int a = [str intValue]; // 转成int 型

    double b = [str doubleValue];

    float f = [str floatValue];

    NSLog(@"a=%i,b=%f,f=%f",a,b,f);

    

    // 是计算字数,而不是字符数

    NSLog(@"%zi",[@"我是字符串123" length]);

    

    // 根据索引 取出对应的字符

    unichar c = [@"abc" characterAtIndex:1];

    NSLog(@"%c",c);

    

    // 返回 C 语言中的字符串

    const char *s = [@"sgdav" UTF8String];

    NSLog(@"%s",s);

}

 

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

    @autoreleasepool {

       

        caseTest();

        compare();

        searchStr();

        subString();

        pathTest();

        extension();

        other();

        

    }

    return 0;

}

 ////// NSMutableString 的使用

#import <Foundation/Foundation.h>

 

#pragma mark

void mutableString(){

    // 预先分配10个字数的存储空间,可以运行的效率,也可以不预先分配

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

    // 添加字符串

    [str setString:@"1234"];

    

    // 拼接一个字符串

    [str appendString:@"567"]; // 这个方法没有返回值,改变就是 str

    [str appendFormat:@"age is %i and height is %.2f",27,1.55];

    

    // 替换字符串

//    NSRange range = NSMakeRange(7, 3); 这种方法虽然能实现但太笨拙

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

    [str replaceCharactersInRange:range withString:@"no"];

    // 插入字符串 haha 会从2这个位置插入进去

    [str insertString:@"haha" atIndex:2];

 

    // 删除字符串

    range = [str rangeOfString:@"ha"];

    [str deleteCharactersInRange:range];

        NSLog(@"%@",str);

    

    // 释放存储空间

    [str release];

}

 

 

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

    @autoreleasepool {

        mutableString();

    }

    return 0;

}

 

posted @ 2016-04-13 19:04  赤云西  阅读(232)  评论(0编辑  收藏  举报