OC 字符串与数组


//
// main.m // oc第四讲
 #import <Foundation/Foundation.h> #import "book.h"

int main(int argc, const char * argv[]) { #pragma mark --NSString 字符串---
    
//NSString不可变字符串,即创建之后不能修改(进行一个增 删 改的操作)(readonly)只读 //创建一个空的字符串 // NSString *string=[[NSString alloc]init]; // NSLog(@"%@",string); //    
//    //根据给定的常量去创建NSString对象(创建常量区的字符串) // NSString *string1=@"imac"; // NSLog(@"%@",string1); // NSLog(@"%p",string1); //    
//    //创建堆区的字符串 // NSString *string2=[[NSString alloc]initWithFormat:@"iphone"]; //    
// NSLog(@"%@",string2); // NSLog(@"%p",string2); //    
//    
//    //如果创建的字符串中会有其他变量 那么我们就要使用initWithFormat 这种方式去创建 //    //可以将我们一些数值拼接到我们字符串中 // NSInteger num=6; // NSString *string3=[[NSString alloc]initWithFormat:@"iphone%lds",num]; // NSLog(@"%@",string3); //便利构造器方法 // NSString *str1=[NSString string]; // NSString *str2=[NSString stringWithString:@"iphone"]; //    //等同于 // NSString *str3=@"iphone"; //    
// NSLog(@"%@",str2); //    
    
    
    
    //获取字符串长度 //    
// NSString *str=@"huluwatum"; //   // NSUInteger length=[str length]; // NSLog(@"%lu",[str length]); //    
//    
//    
//    //判断前缀,返回值为bool类型,所以我们使用%d占位.返回值只有两种结果 0,1; // BOOL result=[str hasPrefix:@"hu"]; // NSLog(@"%d",result); //    
//    
//    //判断后缀 // BOOL resu=[str hasSuffix:@"tum"]; // NSLog(@"%d",resu); //字符串截取(获取字符串); //    //from 打印出从对应的下标开始到最后的字符串 // NSString *str=@"huluwaaotum"; // NSString *substring=[str substringFromIndex:4]; // NSLog(@"%@",substring); //    
//    
// NSString *substring1=[str substringFromIndex:6]; // NSLog(@"%@",substring1); //
//    //to 打印出到指定下标之前(不包括当时下标)的字符串 // NSString *subs=[str substringToIndex:4]; // NSLog(@"%@",subs); //    
//    //NSRange:他是一个结构体 他有两个参数:location(位置),lenght(长度) //    
//    
//    
//    //从下标为2的字符串截取,截取的长度是3个字符 // NSRange range={2,3}; //    
// NSString *substr=[str substringWithRange:range]; //    
// NSLog(@"%@",substr); //    
    
    
    
    //拼接字符串, //1.并没有改变原有的字符串,只是将拼接好的字符串作为了返回值用新的字符串去接收. // NSString *str=@"iphone"; // NSString *str1=@"6s"; //    //这里是将str1这个字符串拼接到str这个字符串之后,形成了新的字符串 // NSString *newstr=[str stringByAppendingString:str1]; // NSLog(@"%@",newstr); //    
//    //2.stringByAppendingFormat如果后边拼接 有两个字符串并没有使用占位符的话,系统会默认值拼接第一个字符串,如果使用占位符的话,那么会将占位符当中的字符串进行拼接. // NSString *newstr2=[str stringByAppendingFormat:str1,str]; // NSLog(@"%@",newstr2); //    
//    
// NSString *newstr1=[str stringByAppendingFormat:@"%@,%@",str1,str]; //    
// NSLog(@"%@",newstr1); //    
    
    
    //替换: //    //将我们第一个中的字符串替换成为第二个参数中的字符串 // NSString *str=@"huluwaxiaojingang"; // NSString *newstr=[str stringByReplacingOccurrencesOfString:@"hul" withString:@"HUL"]; // NSLog(@"%@",newstr); //    
//    
//    
//    //字符串比较 // NSString *str3=[[NSString alloc]initWithFormat:@"huluwa"]; // NSString *str4=[[NSString alloc]initWithFormat:@"jinggang"]; //    
//    //方法是 isEqualToString//比较的是两个字符串当中的内容 // if ([str3 isEqualToString: str4]) { // NSLog(@"字符串相等"); // }else{ // NSLog(@"字符串不相等"); //    
// } //    
//    // == 双等于号 比较是两个字符串的地址,如果地址一样,说明内容一样 //    
//    
// if (str3==str4) { // NSLog(@"字符串相等"); // }else{ // NSLog(@"字符串不相等"); //        
// } //    
//    
//    
//    
//    //大小写转换 //    //将字符串转化为大写 // NSString *string=@"ios"; // NSString *newstring=[string uppercaseString]; // NSLog(@"%@",newstring); //    //转换为小写 // NSString *newstring1=[string lowercaseString]; // NSLog(@"%@",newstring1); //    
//    //首字母大写 // NSString *newstring2=[string capitalizedString]; // NSLog(@"%@",newstring2); //给定一个图片,判断字符串中是否以 png 结尾,如果是就替换城 jpg,如果不是就拼接 .jpg // NSString *string=@"123.jtg"; //    
// BOOL str=[string hasSuffix:@"png"]; //    
//    
// if (str) { // string=[string stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"]; // }else { //    
// string=[string stringByAppendingString:@".jpg"]; //    
// } // NSLog(@"%@",string);
    
    
   
#pragma mark --可变字符串NSMutablestring--
    
    //可变字符串 // NSMutableString是NSString的子类 //    //首先创建一个可变字符串 // NSMutableString *nutablestr=[NSMutableString stringWithString:@"12344"]; // NSLog(@"%@",nutablestr); //    
//   //拼接: //    
// NSString *string123=[NSString stringWithFormat:@"asdfg"]; //    
    //[nutablestr appendString:@"asdfg"]; // [nutablestr appendFormat:@"%@",string123]; // NSLog(@"%@",nutablestr); //    
      //插入 //    //讲一个字符串插入到指定下标位置 // [nutablestr insertString:@"abc" atIndex:3]; // NSLog(@"%@",nutablestr); //
//    
//    //删除 //    //NSRange // NSRange delrange={2,4}; //    //从下标为2的位置开始删除长度为4的字符串 // [nutablestr deleteCharactersInRange:delrange]; // NSLog(@"%@",nutablestr); //    

    
    
    /* 不可变字符串的修改操作本质上就是得到一个新的字符串 不可变字符串的修改方法以string开头,有返回值 可变字符串的修改方法没有返回值,他修改的是原字符串, //使用 nsmutablestring给定一个图片,判断字符串中是否以 png 结尾,如果是就替换城 jpg,如果不是就拼接 .jpg */
// NSMutableString *string=[NSMutableString stringWithFormat:@"12345.jpg"]; //    //判断 // if ([string hasSuffix:@"png"]) { //        //可变字符串替换 //rangeOfString 这个方法就是返回我们png 在当前字符串中所在的位置 // NSRange range=[string rangeOfString:@"png"]; //    //替换 // [string replaceCharactersInRange:range withString:@"jpg"]; //    
// }else{ //    
//    //拼接 // [string appendString:@".jpg"]; //        
//    
// } // NSLog(@"%@",string);
    
#pragma mark -- 数组对象NSArray--
    //数组对象 //不可变数组 //    //arrayWithObjects便利构造器的方法,创建了一个不可变数组对象,结尾nil表示的是结束 // NSArray *array=[NSArray arrayWithObjects:@"a",@"b",@"c",@"d", nil]; // NSLog(@"array=%@",array); //    
//    //获取数组当中元素个数 //    //count // NSLog(@"array=%ld",[array count]); //    
//    //获取数组当中某一个位置(下标)上的值 // NSLog(@"index=%@",[array objectAtIndex:1]); //    
//    
//    //可变数组 //    
// NSMutableArray *muarray=[NSMutableArray arrayWithCapacity:0]; //    
//    //给可变数组添加元素 //    //将上边array(不可变数组)添加到可变数组muarray中; //    
// [muarray addObjectsFromArray:array]; // NSLog(@"muarray=%@",muarray); //    
//    //插入 //    
//    
//    //将我们对象插入到指定下标的位置当中 //    
// [muarray insertObject:@"2" atIndex:2]; // NSLog(@"muarray=%@",muarray); //    
//    
//    //删除 //    //删除指定下表的元素 // [muarray removeObjectAtIndex:1]; // NSLog(@"muarray=%@",muarray); //删除数组当中所有元素 //[muarray removeAllObjects]; // NSLog(@"%@",muarray); //遍历数组元素 //for (这里放的是我们要遍历数组当中元素的类型 in 这里放的是遍历的数组) { // } //    
// for (NSString *str in muarray) { // NSLog(@"%@",str); // } //图书管理 //1.使用可变数组管理所有书籍(定义 book类,包含书名,价格) //2.数组可以添加删除书籍 //3.可以从数组根据书名查找书籍且修改书籍价格 //4展示所有书籍清单 // book *b=[[book alloc]initWithName:@"如来神掌" price:10]; // book *b1=[[book alloc]initWithName:@"到爆天" price:20]; // book *b2=[[book alloc]initWithName:@"葵花宝典" price:2]; // book *b3=[[book alloc]initWithName:@"九阴真经" price:66]; //    
//    //创建一个可变数组 //    
// NSMutableArray *array=[NSMutableArray arrayWithObjects:b,b1,b2,b3, nil]; //    
//// for (NSString *str in array) { //// NSLog(@"%@",str); //// }
//    
//    
//    //添加 //    
// book *b5=[[book alloc]initWithName:@"悲伤牛" price:88]; //    //往可变数组当中添加新的书籍(对象) // [array addObject:b5]; //    //遍历 // for (NSString *str in array) { // NSLog(@"%@",str); // } //    
//    //删除 // [array removeObject:b1]; // for (book *b in array) { // NSLog(@"%@,%.2f",b.name,b.price); // } //    
//    
// for (book *b in array) { // if ([[b name]isEqualToString:@"如来神掌"]) { // [b setPrice:200]; //            
// } // NSLog(@"%@,%.2f",b.name,b.price); // }
    
    
#pragma mark-- 值对象--
   // NSNumber //创建一个NSNumber对象 //将我们基本数据类型转换成对象(值对象) // numberWithInt将int类型转换成NSNumber类型 //    
// NSNumber *num=[NSNumber numberWithInt:10]; // NSLog(@"%@",num); //    
//    //intvalue:将我们值对象转化为基本数据类型 // NSLog(@"num=%d",[num intValue]); //    
#pragma mark --  NSValue---
//    
//    //NSValue 数值类,可以将指针或结构体转化成对象 //    
// int a=10; // int *p=&a; //    //将指针类型转化成对象类型 // NSValue *value=[NSValue valueWithPointer:p]; // NSLog(@"%@",value); //    //将对象类型转化成指针类型 // int *newp=[value pointerValue]; // NSLog(@"%d",*newp); //NSRange // NSRange range={13,15}; //    //将 NSRange转换成nsvalue对象 // NSValue *rangevalue=[NSValue valueWithRange:range]; // NSLog(@"%@",rangevalue); //    
//    //将nsvalue 转化成nsrange // NSRange newrange={0}; // newrange=[rangevalue rangeValue]; // NSLog(@"%lu,%lu",newrange.location,newrange.length);
    
    /* 比较 compare: */
    //使用语法糖创建NSNunber // NSArray *array=@[@1,@2,@3,@4];
    NSNumber *num1=@100; NSNumber *num2=@100; //NSComparisonResult//枚举类型
 NSComparisonResult result=[num1 compare:num2]; NSLog(@"%ld",result); switch (result) { case NSOrderedAscending://-1
            NSLog(@"前小后大"); break; case NSOrderedDescending://1
            NSLog(@"前大后小"); break; case NSOrderedSame://0
            NSLog(@"前后相等"); break; default: break; } return 0; }

 

 

 

// book.h
 #import <Foundation/Foundation.h> @interface book : NSObject { NSString *_name;//书名
    CGFloat _price;//价格
 } -(void)setName:(NSString *)name; -(NSString *)name; -(void)setPrice:(CGFloat)price; -(CGFloat)price; -(instancetype)initWithName:(NSString *)name price:(CGFloat)price; +(instancetype)bookWithName:(NSString *)name price:(CGFloat)price; @end
//
// book.m
 #import "book.h" @implementation book -(void)setName:(NSString *)name{ _name=name; } -(NSString *)name{ return _name; } -(void)setPrice:(CGFloat)price{ _price=price; } -(CGFloat)price{ return _price; } -(instancetype)initWithName:(NSString *)name price:(CGFloat)price{ self=[super init]; if (self) { _name=name; _price=price; } return self; } +(instancetype)bookWithName:(NSString *)name price:(CGFloat)price{ book *b=[[book alloc]initWithName:name price:price]; return b; } @end

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM