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

 

posted @ 2016-05-09 20:29  胡一波  阅读(2229)  评论(0编辑  收藏  举报