iOS复习OC语言 NSString与NSArray 使用

@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

//    [self demo1]; //字符串的拼接、比较、搜索、大小写互换,判断开头与结尾、抽取、互换、剔除

//    [self demo2]; //动态字符串的增、删、查找、替换、判断

//    [self demo3]; //深浅copy

//    [self demo4];//遍历字符串、数组中内容查找

//    [self demo5]; //完整路径,省略路径,扩展名

//    [self demo6];//数组使用

    [self demo7];//数组排序

}


#pragma mark -字符串的拼接、比较、搜索、大小写互换,判断开头与结尾、抽取、互换、剔除首尾

-(void)demo1{

    //赋值

    NSString *string = @"Hello work!";

    NSString *string1 = @"Hello work!";

    NSString *string2 = @"Hello jianguo!";

    

    NSLog(@"string1 = %@ ;string2 = %@",string1,string2);

    

    //拼接

    NSString *string3 = [NSString stringWithFormat:@"%@%@",string1,string2];

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

    

    //比较

    if ([string1 isEqualToString:string2]) //区分大小写的

    {

        NSLog(@"YES");

    }else{

        NSLog(@"NO");

    }

    

    //compare

    BOOL result = ([string1 compare:string2] == NSOrderedSame); //NSOrderedSame判断两者内容是否相同

    result = [string1 compare:string] == NSOrderedSame;

    NSLog(@"result = %d",result);

    

    result = [string1 compare:string2] == NSOrderedAscending; //按字母比较,string2大于string1为真

    NSLog(@"result = %d",result);

    

    result = [string1 compare:string2] == NSOrderedDescending; //按字母比较,string2小于string1为真

    NSLog(@"result = %d",result);

    

    NSString *string4 = @"hello work!";

    result = [string1 caseInsensitiveCompare:string4] == NSOrderedSame; //不考虑大小写比较

    NSLog(@"result = %d",result);

    

    result = [string1 compare:string2 options:NSCaseInsensitiveSearch |NSNumericSearch] == NSOrderedSame; //NSCaseInsensitiveSearch 不区分大小写;NSNumericSearch比较字符串的个数,不比较内容;NSLiteralSearch 区分大小写

    NSLog(@"NSCaseInsensitiveSearch result = %d",result);

    

    //大小写转换

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

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

    NSLog(@"%@:%@",string4,[string4 capitalizedString]);//单词首字母大写

    

    //在字符串中搜索字串

    NSRange rang = [string3 rangeOfString:string1];

    NSLog(@"string3 = %@,string1 = %@",string3,string1);

    NSLog(@"location = %ld,length = %ld",rang.location,rang.length); //子串string1string3中的位置和长度

    

    //hasPrefix 判断开头

    result = [string3 hasPrefix:string1];//判断string3是否以string1开头

    result = [string3 hasPrefix:string2];

    NSLog(@"hasPrefix result = %d",result);

    

    //hasSuffix  判断结尾

    result = [string3 hasSuffix:string2];

    NSLog(@"hasSuffix result = %d",result);

    

    //抽取字符串

    NSString *str1 = [string3 substringFromIndex:3];//从索引位置截取到最后

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

    

    NSString *str2 = [string3 substringToIndex:8]; //从开始截取到索引位置

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

    

    NSString *str3 = [string3 substringWithRange:NSMakeRange(6, 6)];

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

    

    //汉字

    NSString *str=@"aBCdj34中国";

    NSLog(@"str%@",str);

    NSLog(@"length%lu",(unsigned long)[str length]);//字符长度

    NSLog(@"中文占两个字符 length = %lu",(unsigned long)[str lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);//字符长度,中文占两个字符

    

    //剔除字符串

    NSString *ch1=@"  abj87w34 abTRE986  e1J6U";

    ch1=[ch1 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];  //去除首尾空格

    NSLog(@"去除首尾空格ch1:%@",ch1);

    ch1 = [ch1 stringByTrimmingCharactersInSet:[NSCharacterSet lowercaseLetterCharacterSet]]; //去除首尾小写字母

    NSLog(@"去除首尾小写字母ch1:%@",ch1);

    ch1 = [ch1 stringByTrimmingCharactersInSet:[NSCharacterSet uppercaseLetterCharacterSet]]; //去除首尾大写字母

    NSLog(@"去除首尾大写字母ch1:%@",ch1);

    

    ch1 = [ch1 stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"87"]];//去除首尾指定字符串

    NSLog(@"去除首尾指定字符串ch1:%@",ch1);

    

    //字符串与其它类型值互换

    int aa = 123;

    float bb = 3.0;

    NSString *aaStr = [NSString stringWithFormat:@"%d---%f",aa+4,bb]; //数值->字符

    NSLog(@"aaStr:    %@",aaStr);

    

    NSArray *strrArray = @[@"345",@"342.998"];

    

    int a = [strrArray[0] intValue]; //字符->数值

    float b = [strrArray[1] floatValue];

    NSLog(@"a= %d, b= %.2f",a,b); //保留两位小数点


}


#pragma mark -动态字符串的增、删、查找、替换、判断

-(void)demo2{

    NSMutableString *s1 = [NSMutableString stringWithFormat:@"%@",@"happy new year!"];

    NSMutableString *s2 = [NSMutableString stringWithCapacity:60]; //定义字符串长度60

    

    [s1 appendString:@" baby!"]; //在末尾追加字符

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

    

    [s2 appendFormat:@"%@",@"happy birthday!"];

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

    

    [s2 insertString:@"Baby," atIndex:0]; //在指定位置插入字符

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

    

    [s2 deleteCharactersInRange:NSMakeRange(10, 9)];//删除指定字符

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

    

    [s2 replaceCharactersInRange:NSMakeRange(5, 5) withString:@"hello"]; //替换指定区域字符

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

    

    //参数1:目标替换值;参数2:替换成为的值;参数3:类型为默认:NSLiteralSearch;参数4:替换的范围

    [s2 replaceOccurrencesOfString:@"b" withString:@"QQ" options:NSLiteralSearch range:NSMakeRange(0, 4)];

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

    

    [s2 setString:@"hellobaby"];   //按新字符串替换原字符串

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

}


#pragma mark -深浅copy

-(void)demo3{

    NSString *string1 = @"Hello work!";

    NSString *ss1 = [string1 copy]; //copy

    NSLog(@"ss1:%@",ss1);

    

    string1 = @"happy new year!";

    NSLog(@"ss1:%@",ss1);

    

    NSMutableString *string2 = [string1 mutableCopy]; //copy

    NSLog(@"string2:%@",string2);

    

    NSMutableString *string3 = [string2 copy];//copy

    NSLog(@"string3:%@",string3);

    

    [string2 appendString:@"friend!"];

    NSLog(@"string2:%@;string3 = %@",string2,string3);

    

}


#pragma mark -遍历字符串

-(void)demo4{

    //遍历字符串

    NSString *string = @"happy 12345 abc";

    NSMutableArray *strArray = [NSMutableArray array];

    NSString *chr;

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

        chr =[string substringWithRange:NSMakeRange(i, 1)];

        [strArray addObject:chr];

    }

    NSLog(@"strArray:%@",strArray);

    

    //倒序重组字符串

    NSMutableString *string1 = [NSMutableString string];

    for (NSInteger i = [strArray count]; i>0; i--) {

        [string1 appendString:strArray[i-1]];

    }

    NSLog(@"string1:%@",string1);

    

    //数组内容查找、替换

    for (int i = 0; i<strArray.count; i++) {

        if ([strArray[i] isEqualToString:@"a"]) {

            NSLog(@"strArray[%d]",i); //位置查找

            strArray[i]=@"x"; //替换字母a

            NSLog(@"strArray[%d]:%@",i,strArray[i]);

        }

    }

    NSLog(@"strArray:%@",strArray);

}


#pragma mark -路径

-(void)demo5{

    //扩展路径

    NSString *Path = @"~/NSData.txt";

    NSString *absolutePath = [Path stringByExpandingTildeInPath]; //沙盒中完整路径

    NSLog(@"absolutePath:%@",absolutePath);

    NSLog(@"Path:%@",[absolutePath stringByAbbreviatingWithTildeInPath]);//省略路径

    

    //文件扩展名

    NSLog(@"Extension:%@",[Path pathExtension]); //扩展名

}


//分割线

#pragma mark -

//分组标识

#pragma mark - 数组创建及基本使用

-(void)demo6{

    //遍历字符串

    NSString *string = @"happy 12345 abc";

    NSMutableArray *strArray = [NSMutableArray array];

    NSString *chr;

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

        chr =[string substringWithRange:NSMakeRange(i, 1)];

        [strArray addObject:chr];

    }

    NSLog(@"strArray:%@",strArray);

    

    //获取指定下标的数组元素

    NSString *ssttrr = strArray[2];

    NSString *ssttrr2 = [strArray objectAtIndex:2];

    NSLog(@"%@,%@",ssttrr,ssttrr2);

    

    //判断数组中有无此元素

    BOOL isTure = [strArray containsObject:@"a"];

    NSLog(@"包含a %d",isTure);

    

    //获取索引值

    NSInteger index = [strArray indexOfObject:@"p"]; //存在多个相同值时,返回第一个索引值

    NSLog(@"w的索引index %lu",index);

    NSLog(@"第一个元素:   %@",[strArray firstObject]);  //获取第一个元素

    NSLog(@"最后一个元素: %@",[strArray lastObject]);  //获取最后一个元素

    [strArray addObject:@"w"];//在最后加

    [strArray insertObject:@"789" atIndex:8];//在指定位置插入

    [strArray setObject:@"66" atIndexedSubscript:2]; //用新元素替换在指定位置元素

    NSArray *strArr = @[@"4",@"9",@"7",@"8"];

    [strArray addObjectsFromArray:strArr];//在末尾追回数组

//    [strArray setArray:strArr]; //用新数组替换

    [strArray removeObject:@" "]; //删除空格元素

//    [strArray removeAllObjects];//删除所有元素

    [strArray replaceObjectAtIndex:9 withObject:@"ui"]; //修改指定位置元素

    [strArray exchangeObjectAtIndex:0 withObjectAtIndex:1];  //根据索引交换数组元素

    

    //快速遍历数组1

    int i = 0;

    for (NSString *str in strArray) {

        NSLog(@"str %d =%@",i,str);

        i++;

    }

    

    //block方法遍历数组按顺序遍历

    [strArray enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

        NSLog(@"obj:%@,索引idx:%ld",obj,idx);

        // 如果索引为6,就停止遍历

        if (idx == 6) {

           *stop = YES// 利用指针修改外面BOOL变量的值

        }

    }];


    //快速创建数组

    NSArray *arr = [@"1,2,3,4,5,6,7,8,9,0" componentsSeparatedByString:@","];

    NSLog(@"arr:%@",arr);

    

    //倒序遍历 NSEnumerationReverse

    [arr enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

        NSLog(@"NSEnumerationReverse obj:%@,索引idx:%ld",obj,idx);

    }];

    

    //同时遍历数组,无序  NSEnumerationConcurrent

    [arr enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

        NSLog(@"NSEnumerationConcurrent obj:%@,索引idx:%ld",obj,idx);

    }];


    //利用分隔符拼接数组所有元素

    NSString *ssAdd = [strArray componentsJoinedByString:@"---"];

    NSLog(@"ssAdd:%@",ssAdd);

    

    //利用分隔符切分成数组

    NSArray *newArray = [ssAdd componentsSeparatedByString:@"--"];

    NSLog(@"newArray:%@",newArray);

    

    // 将一个数组写入文件(生成的是一个xml文件)

    NSString *path = @"/Users/liaojianguo/array.txt";

    [strArray writeToFile:path atomically:YES];


    // 从文件中读取数组内容(文件有严格的格式要求)

    NSArray *array2 = [NSArray arrayWithContentsOfFile:path];

    NSLog(@"array2:%@",array2);

    

    //让数组里所有对象都调用同print方法  注意见最下面

//    [strArr makeObjectsPerformSelector:@selector(printArr)];

//    [strArr makeObjectsPerformSelector:@selector(printArr:) withObject:self];

    

}


-(void)printArr:(NSString *)str{

    NSLog(@"print ok!%@",str);

}


#pragma mark - 数组排序

-(void)demo7{

    NSArray *sortArray = [[NSArray alloc] initWithObjects:@"1",@"3",@"4",@"7",@"8",@"2",@"6",@"5",@"13",@"12",@"12",@"20",@"28",@"",nil];

    //排序前

    NSLog(@"排序前:%@",sortArray);

    

    //第一种 用比较器排序数组 block

    NSComparator cmptr = ^(id obj1, id obj2){

        if ([obj1 integerValue] > [obj2 integerValue])//数字比较

        {

            NSLog(@"NSOrderedDescending %ld",(long)(NSComparisonResult)NSOrderedDescending);

            return (NSComparisonResult)NSOrderedDescending; //返回1

        }

        if ([obj1 integerValue] < [obj2 integerValue]) {

            NSLog(@"%ld",(NSComparisonResult)NSOrderedAscending);

            return (NSComparisonResult)NSOrderedAscending; //返回-1

        }

        NSLog(@"NSOrderedSame %ld",(NSComparisonResult)NSOrderedSame);

        return (NSComparisonResult)NSOrderedSame;//返回0

    };

    

    NSComparator cmptr2 = ^(id obj1, id obj2){

        if([[NSString stringWithFormat:@"%@",obj1] compare:[NSString stringWithFormat:@"%@",obj2] options:NSNumericSearch] > 0)//字符串比较

        {

            return (NSComparisonResult)NSOrderedDescending;

        }

        

        if([[NSString stringWithFormat:@"%@",obj1] compare:[NSString stringWithFormat:@"%@",obj2] options:NSNumericSearch] < 0)

        {

            return (NSComparisonResult)NSOrderedAscending;

        }

        

        return (NSComparisonResult)NSOrderedSame;

    };

    

    //第一种 sortedArrayUsingComparator

    NSArray *array1 = [sortArray sortedArrayUsingComparator:cmptr];

    NSLog(@"array1排序后:%@",array1);

    

    NSArray *array111 = [sortArray sortedArrayUsingComparator:cmptr2];

    NSLog(@"array111排序后:%@",array111);

    

    NSArray *array112 = [sortArray sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {

        if ([obj1 integerValue] > [obj2 integerValue])//数字比较

        {

            NSLog(@"NSOrderedDescending %ld",(long)(NSComparisonResult)NSOrderedDescending);

            return (NSComparisonResult)NSOrderedDescending; //返回1

        }

        if ([obj1 integerValue] < [obj2 integerValue]) {

            NSLog(@"%ld",(NSComparisonResult)NSOrderedAscending);

            return (NSComparisonResult)NSOrderedAscending; //返回-1

        }

        NSLog(@"NSOrderedSame %ld",(NSComparisonResult)NSOrderedSame);

        return (NSComparisonResult)NSOrderedSame;//返回0

    }];

    NSLog(@"array112排序后:%@",array112);

    

    //第二种 用函数排序数组 sortedArrayUsingFunction

    NSArray *array2 =[sortArray sortedArrayUsingFunction:customSort context:nil];

    NSLog(@"array2排序后:%@",array2);

    

    //第三种 使用描述符类 NSSortDescriptor

    [self demo8];

}


//第二种 用函数排序数组

NSInteger customSort(id obj1, id obj2,void* context)

{

    if ([obj1 integerValue] > [obj2 integerValue]) {

        return (NSComparisonResult)NSOrderedDescending;

    }

    

    if ([obj1 integerValue] < [obj2 integerValue]) {

        return (NSComparisonResult)NSOrderedAscending;

    }

    return (NSComparisonResult)NSOrderedSame;

}


//用于类排序

-(void)demo8{


    Student *student1 = [[Student alloc]initWithName:@"kittey" number:@"1001" score:90];

    Student *student2 = [[Student alloc]initWithName:@"meine" number:@"1006" score:94];

    Student *student3 = [[Student alloc]initWithName:@"meiqi" number:@"1002" score:92];

    Student *student4 = [[Student alloc]initWithName:@"snoopy" number:@"1005" score:94];

    Student *student5 = [[Student alloc]initWithName:@"snoopy" number:@"1008" score:98];

    Student *student6 = [[Student alloc]initWithName:@"snoopy" number:@"1009" score:94];

    

    NSArray *students = @[student1,student2,student3,student4,student5,student6];

    

    // 1.先按照成绩进行排序

    // 这里的key写的是@property的名称

    NSSortDescriptor *scoreDesc = [NSSortDescriptor sortDescriptorWithKey:@"score" ascending:YES];

    // 2.再按照学号进行排序

    NSSortDescriptor *numberDesc = [NSSortDescriptor sortDescriptorWithKey:@"number" ascending:YES];

    // 3.再按照姓名进行排序

    NSSortDescriptor *nameDesc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];

    // 按顺序添加排序描述器

    NSArray *descs = @[scoreDesc,nameDesc,numberDesc];

    

    NSArray *array2 = [students sortedArrayUsingDescriptors:descs];

    for (int i=0; i<array2.count; i++) {

        NSLog(@"array2[%d]:%@    %@    %ld", i,[array2[i] name],[array2[i] number],[array2[i] score]);

    }


}



新建类

#import "ViewController.h"

@interface NSString (MD5Digest)

-(void)printArr:(id)data;

-(void)printArr;

@end


@implementation NSString (MD5)

-(void)printArr:(id)data{

    NSLog(@"print ok! %@,%@",self,data);

}


-(void)printArr{

    NSLog(@"print ok!");

}

@end


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    NSArray *strArr= @[@"sdf",@"sd"];

    

    //让数组里所有对象都调用同print方法

    [strArr makeObjectsPerformSelector:@selector(printArr)];

    [strArr makeObjectsPerformSelector:@selector(printArr:) withObject:self];    

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值