iphone 开发第四天 - 字符串

字符串类:NSString与NSMutableString

  NSString类用于处理内容不变的,固定的字符串,而NSMutableString用于处理内容可变的字符串 继承关系:NSString继承NSObject,NSMutableString继承NSString

  字符编码:NSString用的是Unicode

  编码常量:NSASCIIStringEncoding ----ASCII

        NSUTF8StringEncoding-----Unicode(UTF-8编码)

        NSUnicodeStringEncoding -----Unicode(UTF-16编码)

  

  NSString string = @"This is a NSString.";是一个实例

  用加@符号的方式只能定义含有英文额数字的NSString实例,要生成含有汉字等双字节的字符的NSString实例,必须使用其他方法,

  含有汉字的字符串通常用本地化的方法,以便于翻译成别的语言。

  

  stringWithCString:encoding:以及initWithCString:encoding:方法:

  +(id)stringWithCString:(const char*) cString encoding:(NSStringEncoding)encoding

  - (id)initWithCString:(const char*)cString encoding:(NSStringEncoding)encoding

  指定C语言字符串编码后生成NSString实例,前一个是创建自动释放型的实例,后一个是init方法,在alloc之后调用初始化,

  第一个参数可以放入含有汉字的字符串,第二个参数是指定字符编码,很容易看懂的哈

  

  NSString* string;

  string = [NSString stringWithCString:"你好!"encoding:NSUTF8StringEncoding];

  这样就生成了中文字符串,注意在参数的字符串前面不加@,是保持C字符串的风格,另一点就是在字符编码参数中,设置于源文件相同的编码方式,否则就乱码啦

    

  

  使用格式创建字符串

  可以通过指定格式的形式来创建字符串,格式与printf语句很相似,也使用转义字符:

  用stringWithFormat:,

 

  NSObject

   +(id)stringWithFormat:(NSString*)format

   - (id)initWithFormat:(NSString*)format

  格式本身是以NSString的形式指定,所以要加@

  除了和c语言一样的转义字符,加了一个额外的%@,表示以NSString实例的格式输出,用法例子如下:

  NSString* str1;

      str1 = @"Mac";

  NSString* str2;

      str2 = [NSString stringWithFormat:@"%@ Pro", str1];

  NSLog(str2);

  //str2的值为“Mac Pro”。

  

  NSRange结构体,可能因为成员较少所以定义为结构体,从名称上可以猜出是用来指示范围的,其实就是

  用来辅助操作NSString的一个很好的结构体,其中定义了location和length,都是unsigned int型

  NSRange range = NSMakeRange(0,5);

  因为他是结构体,,所以直接就调用了,

  NSRange

  NSMakeRange(unsigned int location,unsigned int length);

 

  字符串处理

  

  长度 - (unsigned int)length

  两个字符串的连接: -(NSString*)stringByAppendingString:(NSString*)string,生成第三个实例对象

            -(NSString*)stringByAppendingFormat:(NSString*)format,···追加指定格式的字符串

  例子:

    NSString* str1 = @“Mac OS X”;

    NSString* str2 = @"Leopard";

    NSString* str3 = [str1 stringByAppendingString:str2];

    NSLog(str3);

    NSString str4 = [str2 stringByAppendingFormat:@"%d.%d",10,5];

    NSLog(str4);

    NSString str5 = [NSString stringWithFormat:@"%@%@",str1,str2];

    NSLog(str5);

  NSMutableString

    生成可以改变内容的字符串对象

    NSString

    +(id)string 生成空字符串的实例,但对于NSString类来说没有意义,因为值不可改变只会浪费栈内存,但是对于NSMutableString型字符串就有意义

    +(id)stringWithString:(NSString*)string

    -(id)initWithstring:(NSString*)string 这两个是继承与NSString 的methods,生成与NSString相同内容的实例

    NSMutableString *string = [NSMutableString stringWithString:@"Mac"];

    追加字符串:

    +(void)appendingString:(NSString*)string 追加字符串string

    -(void) appendingFormat:(NSString*)format,··· 指甲指定格式的字符串

    例子:

    NSMutableString* string = [NSMutableString string];//生成空字符串

    //追加字符串

    [string appendString:@"Mac"];

    [string appendString:@"OS"];

    [string appendString:@"X"];

    NSLog(string);//输出为“MacOSX”

    插入字符串

    NSMutableString

    +(void)insertString:(NSString*)string atIndex:(unsigned)index 指定位置不要超出字符串长度,index 0~length

    NSMutableString* string = [NSMutableString stringWithString:@"Mac X"];

    [string insertString:@"OS" atIndex:4];

    NSLog(string);

 

    删除字符串

    +(void)deleteCharactersInRange:(NSRange)range

    NSMutableSting* string = [NSMutableString stringWithString:@"Mac"];

    [string deleteCharactersInRange:NSMakeRange(0,1)]

    NSLog(string);//变成”ac“

 

    字符串比较:NSString -(BOOL)isEqualToString:(NSString*)string   返回YES或者NO

    字符串比较前置串与后置串:NSString -(BOOL)hasPrefix:(NSString*)string,NSString -(BOOL)hasSuffix:(NSString*)string

    字符串的检索:

    NSString -(NSRange)rangeOfString:(NSString*)subString

          -(NSRange)rangeOfString:(NSString*)subString option:(unsigned)mask

          -(NSRange)rangeOfString:(NSString*)subString option:(unsigned)mask range:(NSRange)range

    指定选项mask,检索范围

    若果找到子串,则返回范围,如果没有则返回的NSRange的location为NSNotFound

    mask:NSCaseInsensitiveSearch 不区分大小写

        NSLiteralSearch 对字符串进行字节单位的比较,一般可以提高检索速度。

        NSBackwordsSearch 反向检索

        NSAnchoredSearch  仅检索指定范围的前部忽略字符串中间的检索字符。

        

    抽取字符串:NSString - (NSString)substringToIndex:(unsigned)index

          NSString - (NSString)substringFromIndex:(unsigned)index

          NSString - (NSString)substringWithRange:(NSRange)range

    读写文本文件:Cocoa中没有提供检测文件字符编码 功能,这个必须由编程人员自己提前了解到

    读取:      NSString

          +(id)stringWithContentsOfFile:(NSString*)path encoding:(NSStringEncoding)encoding error:(NSError**)error

          +(id)initWithContentsOfFile:(NSString*)path encoding:(NSStringEncoding)encoding error:(NSError**)error   

    输出:    NSString

          -(BOOL)writeToFile:(NSString*)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)encoding error:(NSError**)error

          是否使用辅助文件,通常为YES,以免发生意外,辅助文件相当于临时文件缓存

    文件的读取和输出的例子就先不写了,好累。。。下节见,下节就是集合了,在java中的Collection ,不晓得oc里面是啥子哦

  

posted @ 2013-11-09 14:04  Mareon  阅读(305)  评论(0编辑  收藏  举报