zoukankan      html  css  js  c++  java
  • Object C学习笔记7-字符串NSString之一

    Object C学习笔记7-字符串NSString之一

    2014-02-13 22:42 by 贺臣, 200 阅读, 0 评论, 收藏, 编辑

      在Object C中存在两个类用于操作字符串,NSString和NSMutableString;NSString在赋值之后不能修改其内容和长度,而NSMutableString可以动态的修改字符串内容和长度,其主要区别就和.NET 中的string与StringBuilder之间的区别。

      1. 定义NSString字符串

        在Object C中NSString是一个对象类型,其有多种定义方式:

    复制代码
    NSString *str1=@"令狐聪";
            
            NSString *str2=[NSString stringWithFormat:@"名称: %@ 性别:%s 年龄: %d 
    ",str1,"",25];
            
            NSString *str3=[NSString stringWithFormat:@"我的姓名是 令狐聪"];
            
            NSString *str4=[NSString stringWithUTF8String:"我是任盈盈"];
            
            NSString *str5=[str4 stringByAppendingString:str3];
            
            NSString *str6=[str4 stringByAppendingFormat:@" %@",@"笑傲江湖abc"];
            
            NSLog(@"str1=%@",str1);
            NSLog(@"str2=%@",str2);
            NSLog(@"str3=%@",str3);
            NSLog(@"str4=%@",str4);
            NSLog(@"str5=%@",str5);
            NSLog(@"str6=%@",str6);
    复制代码

        因为NSString是对象类型,所以在定义的时候要使用 NSString *name 方式,而值需要使用 @+value方式,如@"NSString中文";

        也可以使用stringWithFormat全局方法,stringWithUTF8String,stringByAppendingString,stringByAppendingFormat等方法来定义,看到Format我们可以想到.NET中的Format()方法,用于格式化字符串。以上几个方法具体效果如下:

    复制代码
    2014-02-13 20:53:13.247 ObjectC10[460:303] str1=令狐聪
    2014-02-13 20:53:13.249 ObjectC10[460:303] str2=名称: 令狐聪 性别: 年龄: 25 
    2014-02-13 20:53:13.251 ObjectC10[460:303] str3=我的姓名是 令狐聪
    2014-02-13 20:53:13.252 ObjectC10[460:303] str4=我是任盈盈
    2014-02-13 20:53:13.252 ObjectC10[460:303] str5=我是任盈盈我的姓名是 令狐聪
    2014-02-13 20:53:13.253 ObjectC10[460:303] str6=我是任盈盈 笑傲江湖abc
    复制代码

      2.遍历字符串中的字符

        使用- (NSUInteger)length; 方法可以获得字符串的长度,这里要注意中文和英文的问题,在C中char表示一个字节,而一个中文字符占用两个字节位。

    可以获得。

    复制代码
    int count=[str6 length];
            NSLog(@"字符串长度:%d",count);
            for(int i=0;i<count;i++){
                NSString *abc=[str6 substringWithRange:NSMakeRange(i,1)];
                NSLog(@"%@",abc);
            }
            
            for(int i=0;i<count;i++){
                unichar c=[str6 characterAtIndex:i];
                NSLog(@"中文情况=%c",c);
            }
            
            for(int i=0;i<count;i++){
                unichar c=[str6 characterAtIndex:i];
                NSLog(@"中文情况=%C",c);
            }
    复制代码

        第一种方式NSString *abc=[str6 substringWithRange:NSMakeRange(i,1)];

        第二种方式unichar c=[str6 characterAtIndex:i];

        这种需要注意中文的问题,第二种方式出现中文%c输出则为乱码,必须使用%C才能正确的输出中文。效果如下

    复制代码
    2014-02-13 20:53:13.253 ObjectC10[460:303] 字符串长度:13
    2014-02-13 20:53:13.253 ObjectC10[460:303] 我
    2014-02-13 20:53:13.254 ObjectC10[460:303] 是
    2014-02-13 20:53:13.254 ObjectC10[460:303] 任
    2014-02-13 20:53:13.255 ObjectC10[460:303] 盈
    2014-02-13 20:53:13.255 ObjectC10[460:303] 盈
    2014-02-13 20:53:13.255 ObjectC10[460:303]  
    2014-02-13 20:53:13.256 ObjectC10[460:303] 笑
    2014-02-13 20:53:13.256 ObjectC10[460:303] 傲
    2014-02-13 20:53:13.257 ObjectC10[460:303] 江
    2014-02-13 20:53:13.257 ObjectC10[460:303] 湖
    2014-02-13 20:53:13.258 ObjectC10[460:303] a
    2014-02-13 20:53:13.258 ObjectC10[460:303] b
    2014-02-13 20:53:13.258 ObjectC10[460:303] c
    2014-02-13 20:53:13.259 ObjectC10[460:303] 中文情况=
    2014-02-13 20:53:13.259 ObjectC10[460:303] 中文情况=/
    2014-02-13 20:53:13.260 ObjectC10[460:303] 中文情况=û
    2014-02-13 20:53:13.260 ObjectC10[460:303] 中文情况=È
    2014-02-13 20:53:13.261 ObjectC10[460:303] 中文情况=È
    2014-02-13 20:53:13.261 ObjectC10[460:303] 中文情况= 
    2014-02-13 20:53:13.261 ObjectC10[460:303] 中文情况=
    2014-02-13 20:53:13.262 ObjectC10[460:303] 中文情况=²
    2014-02-13 20:53:13.262 ObjectC10[460:303] 中文情况=_
    2014-02-13 20:53:13.263 ObjectC10[460:303] 中文情况=V
    2014-02-13 20:53:13.263 ObjectC10[460:303] 中文情况=a
    2014-02-13 20:53:13.264 ObjectC10[460:303] 中文情况=b
    2014-02-13 20:53:13.264 ObjectC10[460:303] 中文情况=c
    2014-02-13 20:53:13.265 ObjectC10[460:303] 中文情况=2014-02-13 20:53:13.265 ObjectC10[460:303] 中文情况=2014-02-13 20:53:13.266 ObjectC10[460:303] 中文情况=2014-02-13 20:53:13.266 ObjectC10[460:303] 中文情况=2014-02-13 20:53:13.266 ObjectC10[460:303] 中文情况=2014-02-13 20:53:13.267 ObjectC10[460:303] 中文情况= 
    2014-02-13 20:53:13.267 ObjectC10[460:303] 中文情况=2014-02-13 20:53:13.268 ObjectC10[460:303] 中文情况=2014-02-13 20:53:13.268 ObjectC10[460:303] 中文情况=2014-02-13 20:53:13.269 ObjectC10[460:303] 中文情况=2014-02-13 20:53:13.269 ObjectC10[460:303] 中文情况=a
    2014-02-13 20:53:13.269 ObjectC10[460:303] 中文情况=b
    2014-02-13 20:53:13.270 ObjectC10[460:303] 中文情况=c
    复制代码

       

      3. 字符串比较

        Object C中字符串的比较使用isEqualToString

    复制代码
    //比较字符串
            NSString *str1=[[NSString alloc] init];
            str1=@"Object C第一课";
            
            NSString *str2=[[NSString alloc] initWithString:@"Object C第一课"];
            
            BOOL flag=[str1 isEqualToString:str2];
            if(flag){
                NSLog(@"%@",@"字符串相等");
            }
    复制代码

      4. compare方法

        compare方法也用于比较,但是会返回三个值:

        NSOrderedSame: 判断两者类容是否完全一样

        NSOrderedAscending: 判断两者大小,前者小于后者的时候为真

        NSOrderedDescending:判断两者大小,前者大于后者的时候为真

    复制代码
    NSString *str1 = @"中国-朝鲜";
            
            NSString *str2 = @"中国-朝鲜";
            
            BOOL result = [str1 compare:str2] == NSOrderedSame;           
            NSLog(@"result:%d",result);
        
            
            NSString *str3=@"abc";
            NSString *str4=@"acc";
            result=[str3 compare:str4]==NSOrderedAscending;
            NSLog(@"result:%d",result);
            
            
            NSString *str5=@"adc";
            NSString *str6=@"aac";
            result=[str5 compare:str6]==NSOrderedDescending;
            NSLog(@"result:%d",result);
     
  • 相关阅读:
    cin、cout、cerr、clog------c++ Primer Plus
    c++ 用new后delete,而继续输出指针后果 new/new[]/delete/delete[]区别
    c++类
    c++内联 inline
    c++ 委托构造函数
    c++ explicit
    activti表结构
    工作流设计
    问题解决
    grep 命令
  • 原文地址:https://www.cnblogs.com/wodehao0808/p/3592106.html
Copyright © 2011-2022 走看看