OC_05_NSString类,NSMutable,NSArray类

来源:互联网 发布:深圳十六号公寓知乎 编辑:程序博客网 时间:2024/05/22 07:53

创建字符串的三种方式:

第一种:我们比较常用的创建方式,

   NSString *str =@"king"; //这种方式我们叫字面量

第二种:

    NSString *s = [[NSStringalloc]init];

    NSString *s1 = [[NSStringalloc]initWithString:@"queen"];

使用这种方法也可以创建一个字符串,但是会报一个异常,因为现在已经不推荐使用这种alloc,initWithString来创建一个字符串对象 

第三种:就是用便利构造器来创建,

NSString*str = [NSStringstringWithString:@“nihao”];用他创建出现的警告和alloc一样,系统还是推荐使用第一种字⾯面量的方式来创建





NSString的常用方法

我们先创建一个对象,

NSString *str = @"queen";  //OC里没有'\0'

获取字符串⻓长度:
我们打印长度来,NSLog(@"%ld", str.length); // 属性length是一个readonly的属性
获取⼦字符串

    判断是否有前缀

    NSLog(@"%d", [str hasPrefix:@"qu"]);

    NSLog(@"%d", [str hasSuffix:@"en"]);  //后缀

也可以使用点语法调用,hasPrefix和hasSuffix的返回值是BOOL

截取字符串

NSString *result = [str substringFromIndex:1];//index开始,包括index

    NSString *result = [str substringToIndex:3];//index结束,不包括index

    NSRange range = {1, 3};//第一个是起始位下标,第二个是长度,下标都从0开始,

//    NSRange是结构体

    NSString *result = [str substringWithRange:range];

    NSLog(@"%@", result);

拼接字符串

  NSString *str = @"queen";

  NSInteger a = 520;

    CGFloat b = 3.14;

    // ***** 拼接字符串

    //这种方法可以把任意类型的内容,转换成字符串

    NSString *newStr = [NSString stringWithFormat:@"king love %@%ld%g",str, a, b];

    NSLog(@"%@", newStr);

可以用该方法实现转换

//把任意类型转换成字符类型

    NSString *newStr1 = [NSString stringWithFormat:@"%ld", a];

    NSLog(@"%@", newStr1);

  //整形与字符相互转换

    NSString *c = @"100";

    NSInteger str2 = [c integerValue];

    NSLog(@"%ld", str2);

替换字符串
NSString *str = @"queen";

字符串的替换...只有是对应的替换内容都会替换 :e->kk

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

    NSLog(@"%@", newStr);

字符串相等

 NSString *str1 = @"queen";

NSString *str = @"queen";

 //isEqualToString方法字符串内容的比较  内容!!!只能比较相等

    if ([str isEqualToString:@"queen"]) {

        NSLog(@"一样");

    }else{

        NSLog(@"no");

    }

    

    if (str == str1) {//地址

        NSLog(@"地址相等");

    }else{

        NSLog(@"地址不相等");

    } //这里str和str1地址是相等的,因为两个指针都指向queen的区域,queen相当于存储在常量区里,

queen的地址是不会改变的,能改变的只是指针的指向

字符串比较

//    字符串的比较(能进行排序,equal只能判断内容相等),返回值类型为枚举,-1,0,1;

    NSString *str = @"ebc";

    NSString *aStr = @"bcd";

    NSLog(@"%ld", [str compare:aStr]);

    NSComparisonResult result1 = [str compare:aStr];

    NSLog(@"%ld", result1);


可变字符串

   NSMutableString *str =@"king";

//    如果拿字面量来创建一个字符串的话,是不可变字符串(NSString),有警告,所以使用以下两种

    

//初始化方法

    NSMutableString *str1 = [[NSMutableStringalloc]initWithString:@"king"];

   NSLog(@"%@", str1);

    

 //便利构造器 

    NSMutableString *str2 = [NSMutableStringstringWithString:@"queen"];

    [str1 insertString:str2atIndex:1];  //在下标的前面插入,该方法无返回值,所有直接对str1进行修改


   NSLog(@"%@", str1);

   NSRange r = {1,3};

    [str1 deleteCharactersInRange:r];//从下标开始删除范围的长度

   NSLog(@"%@", str1);

    [str1 deleteCharactersInRange:NSMakeRange(1, 2)];

   NSLog(@"%@", str1);

    //NSMakeRange 可以和 NSRange 替换

    

    

    

//    注意返回值类型

    NSMutableString *str = [NSMutableStringstringWithString:@"kingqueen"];

    [str substringFromIndex:1]; //返回值类型为NSString

    NSString *newStr = [strsubstringFromIndex:1];

   NSLog(@"%@", newStr);



    

    //不可变数组

    NSString *s =@"king";

    NSArray *arr = [[NSArrayalloc]initWithObjects:s,@"2",@"3", @"4",@"5",@"6", nil];

   NSLog(@"%@", arr);//对象的占位符为%@

   NSLog(@"%ld", arr.count);

    NSLog(@"%@", [arrobjectAtIndex:0]);

   NSLog(@"%@", arr[0]);

    //崩溃先看reason,养成习惯

    

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

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

       NSLog(@"%@", arr[i]);

    }

    

    

    

    //用遍历构造器创建一个数组对象

   NSArray *arr = [NSArray arrayWithObjects:@"king",@"queen",@"joker",@"dota",nil];

    //字面量

    NSArray *arr1 = @[@"king",@"queen",@"joker",@"dota"];

    

    Student *stu1 = [[Studentalloc]init];

    Student *stu2 = [[Studentalloc]init];

    Student *stu3 = [[Studentalloc]init];

    Student *stu4 = [[Studentalloc]init];

    Student *stu5 = [[Studentalloc]init];

    

   NSArray *arr = [NSArray arrayWithObjects:stu1, stu2, stu3, stu4, stu5,nil];

    //要保证数组里的所有元素都是对象类型

   Student *temp = [arrobjectAtIndex:2];







可变数组

    NSMutableArray *arr = [[NSMutableArrayalloc]init];

    NSMutableArray *arr1 = [[NSMutableArrayalloc]initWithObjects:@"k",@"q",nil];

    NSMutableArray *arr2 = [NSMutableArrayarrayWithObjects:@"a",@"b",nil];

    

    //给数组添加一个对象

    [arr1 addObject:@"sss"];

    

    //把数组内的所有元素添加到另一个数组中

    [arr1 addObjectsFromArray:arr2];

    

   //插入

    [arr1 insertObject:@"j"atIndex:2];

    

   //移除

    [arr1removeObject:@"j"]; //移除元素j

    [arr1 removeObjectAtIndex:2];  //移除对应下标的对象

    [arr1 removeLastObject]; //移除最后一个元素

    

//    [arr1 removeAllObjects];  //清空数组

    

   //替换

    [arr1 replaceObjectAtIndex:3withObject:@"aaa"];

  

   //交换

    [arr1 exchangeObjectAtIndex:0withObjectAtIndex:1];

   NSLog(@"%ld", arr1.count);

   NSLog(@"%@", arr1);



    快速枚举 for-in

   for (Student *tempStuin stuArr) {

       if ([tempStu.name  isEqual:@"aaa"]) { //两个字符串的比较

            tempStu.score = 95.0;

        }

        NSLog(@"%g", tempStu.score);

    }

    

    

    NSArray *arr1 = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4", @"5",nil];

    NSArray *arr2 = [NSArrayarrayWithObjects:@"6",@"7",@"8", @"9",@"10",nil];

   NSArray *arr = [NSArray arrayWithObjects:arr1, arr2,nil];

    

   for (NSArray *tempArrin arr) {

//        NSLog(@"%@", tempArr);

       for (NSString *strin tempArr) {

           NSLog(@"%@", str);

        }

    }



    

    


//    NSRange range = {1, 2};

//    

//    NSInteger a = 10;

//    NSNumber *number = [NSNumber numberWithInteger:a];

//    NSLog(@"%@", number);

//    // number->integer

//    NSInteger b = [number integerValue];

//    NSLog(@"%ld", b);

    

    //数组里边只有放对象才不会有问题

//    NSArray *arr = [NSArray arrayWithObjects:a, nil];

    

    //NSValue

    //把结构体转换成对象

   NSRange range = {1, 2};

    NSValue *value = [NSValuevalueWithRange:range];

   NSLog(@"%@", value);

   int *p = NULL;

    NSValue *pointerValue = [NSValuevalueWithPointer:p];

   NSLog(@"%@", pointerValue);



好吧,内容太多,整理有麻烦




    



0 0
原创粉丝点击