zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    flash
    三星核S5PV210AH-A0 SAMSUNG
    FATFS(A)
    DDR2是什么意思
    Java中的三大框架分别有什么用
    SD卡
    自动挡汽车档位介绍
    FSMC(STM32)
    陶瓷天线
    'telnet'不是内部或外部命令,怎么办?
  • 原文地址:https://www.cnblogs.com/huyibo/p/5475328.html
Copyright © 2011-2022 走看看