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);
     
  • 相关阅读:
    HDU 1850 Being a Good Boy in Spring Festival
    UESTC 1080 空心矩阵
    HDU 2491 Priest John's Busiest Day
    UVALive 6181
    ZOJ 2674 Strange Limit
    UVA 12532 Interval Product
    UESTC 1237 质因子分解
    UESTC 1014 Shot
    xe5 android listbox的 TMetropolisUIListBoxItem
    xe5 android tts(Text To Speech)
  • 原文地址:https://www.cnblogs.com/wodehao0808/p/3592106.html
Copyright © 2011-2022 走看看