objective-c 基础教程 读书笔记之第八章字符串简介

        objective-c 基础教程 这本书可以说是iphone ios开发入门的经典基础教程。半年前看过,现在学习iphone开发有一段时间了,如今重读这本书,感觉还是有很多收获,写笔记有两个目的,一是方便自己写程序的时候查看,第二是帮助初学者查看,鉴于此,笔记中会加入我自己的一些内容,以方便初学者。对于已有编程经验的人来说,这本书前面7章都可以当小说一样看过。

       写程序其中估计有50%都是在处理字符串。字符串处理对掌握一门语言或者一个平台都是非常重要的。以前在symbian上开发程序,因为经常会在symbian字符串和标准C字符串中转换。而又没有现成的可用代码。只能自己封装,这画了不少精力和时间。在iphone开发中用不着这么痛苦,系统为我们提供了强大的字符串处理函数。

1:创建字符串,

   最常用的莫过于直接把一个常量字符串付给一个变量,比如 :NSString * tmp = @"Hello, World!!" ;  

   其次是使用类方法 +(id) stringWithFormat:(NSString *) format,⋯;

   比如:

    int  h = 178;

    NSString * height = [NSString stringWithFormat:@"Your height is %d cm",h ];

2:获取字符串的长度

    - (unsigned int)length;

    sdk中帮助文档并不是这样定义的,而是:- (NSUInteger)length。

   而NSUInteger的定义是:

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64

typedef unsigned long NSUInteger;

#else

typedef unsigned int NSUInteger;

#endif

  

3:字符串比较

   A: - (BOOL)isEqualToString:(NSString *)aString

   两个字符串相同返回YES,不同返回NO。

   

  B:- (NSComparisonResult)compare:(NSString *)aString

 其中NSComparisonResult定义如下:

typedef  enum _NSComparisonResult {

   NSOrderedAscending = -1,

   NSOrderedSame,

   NSOrderedDescending

}NSComparisonResult;

 这个比价反映了两个字符串的大小关系,比如 [@"aardvark" compare:@"zygote"]将返回NSOrderedAscending。

C:不区分大小写的比较:compare:options:

   options是一个位掩码,常用选项如下:

NSCaseInsensitiveSearch, 不区分大小写。

NSLiteralSearch, 进行完全比较,区分大小写。

NSNumericSearch.比较字符串的字符个数,而不是字符值。

不区分大小写比较也可以用函数  - (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString。

D:字符串中是否有别的字符串,字符串查找

   

- (BOOL)hasPrefix:(NSString *)aString  是否以一个字符串开头

- (BOOL)hasSuffix:(NSString *)aString  是否以一个字符串结尾。

- (NSRange)rangeOfString:(NSString *)aString 查找一个字符串的起始位置。如果没找到返回{NSNotFound,0}

4:从一个字符串获取子字符串,

  

- (NSString *)substringFromIndex:(NSUInteger)anIndex:从指定位置开始到字符串结束

- (NSString *)substringToIndex:(NSUInteger)anIndex       从字符串开始第一个到指定位置。

- (NSString *)substringWithRange:(NSRange)aRange    取一个字符串中间的一部分。

例子:

int main(int argc, char *argv[])

{

    int  h = 178;

    NSString * height = [NSString stringWithFormat:@"YourHeightIs %d cm",h ];

    NSRange rang = [height rangeOfString:@"Height"];

    if(rang.location !=NSNotFound)

    {

        NSLog(@"%@",[height substringWithRange:rang]);

        NSLog(@"%@",[height substringFromIndex:rang.location+rang.length]);

    }

    return (0);

}

  这个例子演示了字符串的基本用法包括查找和取子字符串。结果:

Height

Is 178 cm


5:字符串连接:

- (NSString *)stringByAppendingString:(NSString *)aString

- (NSString *)stringByAppendingFormat:(NSString *)format ...


6:可变字符串

  NSString是不可变的,意味着一旦创建好,就不能再改变,不能对它删除或者重置。

  Cocoa 提供了NSString的子类NSMutableString,可以实现可变字符串。NSMutableString常见方法。

   + (id)stringWithCapacity:(NSUInteger)capacity  创建一个字符串并指定最大长度。

  - (void)appendString:(NSString *)aString  追加字符

 - (void)appendFormat:(NSString *)format ...   按格式追加字符

- (void)deleteCharactersInRange:(NSRange)aRange  删除指定位置的字符。

- (void)insertString:(NSString *)aString atIndex:(NSUInteger)anIndex   在指定位置插入字符

- (void)replaceCharactersInRange:(NSRange)aRange withString:(NSString *)aString    替换指定位置的字符

- (void)setString:(NSString *)aString    重置字符串。







 


    




你可能感兴趣的:(字符串,读书笔记,iPhone,iPhone,iPhone,基础教程,字符串简介)