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    重置字符串。







 


    




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章