NSString與NSMutableString用法

//==========字符串的聲明與初始化==========

       //第一種 創建常量字符串 這段代碼的含義其實就是附一個常量給str,該部分由系統自動管理,不需要release釋放,是會autorelease

          NSString * str1 =@"Hello World";

        NSLog(@"第一種創建常量字符串:%@",str1);

        

        //第二種 創建空字符串,並賦值。

        NSString * str2 =[[NSStringalloc]init];

        str2 = @"Hello World";

        NSLog(@"第二種創建空字符串,給予賦值:%@",str2);

        [str2release];

        

        //第三種使用initWithString方法

        NSString * str3 = [[NSStringalloc]initWithString:@"Hello World"];

        NSLog(@"第三種使用initWithString方法:%@",str3);

        [str3release];

        

       //第四種用標準C創建字符串:(initWithCString

        //encoding字符串的編碼方式

        /*

         字符編碼

         計算機中的信息包括數據信息和控制信息,數據信息又可分爲數值和非數值信息。非數值信息和控制信息包括了字母、各種控制符號、圖形符號等,它們都是以二進制編碼方式存入計算機並得以處理,這種對字母和符號進行編碼的二進制代碼稱爲字符代碼(Character Code)。計算機中常用的字符編碼有ASCII碼(美國標準信息交換碼)和EBCDIC碼(擴展的BCD交換碼)

         */

        char * strTemp ="你好,世界";

        NSString * str4 =[[NSStringalloc]initWithCString:strTemp encoding:NSUTF8StringEncoding];

        NSLog(@"第四種用標準C創建字符串:(initWithCString%@",str4);

        [str4release];

        

        //第五種創建格式化字符串(stringWithFormat://類方法由系統回收內存

        NSString * str5 =[NSStringstringWithFormat:@"%d種創建格式化字符串%@",5,str4];

        NSLog(@"%@",str5);

        

        //第六種字符串轉換utf8格式參數char*類型 //類方法由系統回收內存

        NSString * str6 =[NSStringstringWithUTF8String:"你好世界"];

        NSLog(@"%@",str6);

        

       //第七種字符串合併創建新字符串 //類方法由系統回收內存

        int i =1;

        char *c ="geek";

        NSString * temp =@"臨時字符串";

        //在字符串strTemp的後面添加int i char * c組成一個新的字符串  此時c應爲英文如果爲中文將其轉化爲NSString將發生亂碼

        NSString * str7 =[tempstringByAppendingFormat:@"%d %s",i,c];

        NSLog(@"%@",str7);

        

        /*

         UILable文本框賦值時,很容易造成內存泄露,比較正確的方法如下兩種

         1.

         NSString * str =[[NSString alloc] initWithFormat:@"%@",@"geek"];

         label.text = str;

         [str release];

         最後在dealloc中再[label release];

         2.

         label.text = [NSString stringWithFormat:@"%@",@"geek"];

         最後在dealloc中再[label release];

         */

        

//==========字符串的方法==========


        //1.判斷字符串是否相等[區分大小寫](isEqualToString  相同時返回1不同時返回0)

        NSString * str01 =@"This is a string !";

        NSString * str02 =@"This is a String !";

        BOOL result01 =[str01isEqualToString:str02];

        NSLog(@"1.判斷字符串是否相等result01:%d",result01);

        

        

        //2.字符串大小進行比較(compare方法  [區分大小寫])

        NSString * str03 =@"This is a String !";

        NSString * str04 =@"This is a String !";

        BOOL result02 =[str03compare:str04] ==NSOrderedSame;

        BOOL result03 =[str03compare:str04] ==NSOrderedAscending;//NSOrderedAscending判斷兩對象值的大小(按字母順序進行比較,str04大於str03爲真) //Ascending 升序

        BOOL result04 =[str03compare:str04] ==NSOrderedDescending;//NSOrderedDescending判斷兩對象值的大小(按字母順序進行比較,str04小於str03爲真) //降序

        NSLog(@"字符串大小進行比較result02:%d",result02);

        NSLog(@"字符串大小進行比較result03:%d",result03);

        NSLog(@"字符串大小進行比較result04:%d",result04);

        

        

        //3.判斷字符串是否以特定字符串開頭或結尾

        //hasPrefixe 匹配字符串頭

       //hasSuffix 匹配字符串的尾

        NSString * str05 =@"This is a String !";

        if ([str05hasPrefix:@"This"]) {

            NSLog(@"字符串str05This開頭");

        }

        if ([str05hasSuffix:@"!"]) {

            NSLog(@"字符串str05!結尾");

        }

        

        //4.不考慮大小寫比較字符串

        NSString * str06 =@"This is a String !";

        NSString * str07 =@"this is a String !";

        BOOL result05 = [str06caseInsensitiveCompare:str07] ==NSOrderedSame; //NSOrderedDescending判斷兩對象值的大小(按字母順序進行比較,str07小於str06爲真)  NSOrderedAscending判斷兩對象值的大小(按字母順序進行比較,str07大於str06爲真)

        NSLog(@"4.不考慮大小寫比較字符串result05%d",result05);

        

        BOOL result06 = [str06compare:str07options:NSCaseInsensitiveSearch |NSNumericSearch]==NSOrderedSame;//NSCaseInsensitiveSearch:不區分大小寫比較 NSLiteralSearch:進行完全比較,區分大小寫 NSNumericSearch:比較字符串的字符個數,而不是字符值。

        NSLog(@"//4.不考慮大小寫比較字符串result06%d",result06);

        

        //5.輸出大寫或者小寫字符串 

        NSString * str08 =@"this is a String !";

        NSString * str09 =@"Geek!";

        NSLog(@"%@",[str08uppercaseString]);//大寫

        NSLog(@"%@",[str09lowercaseString]);//小寫

        NSLog(@"%@",[str08capitalizedString]);//字符串中每個首字母都大寫

        

        //6.查找字符串某處是否包含其它字符串 (rangOfString)

        NSString * str10 =@"This is a String";

        NSString * str11 =@"is";

        NSRange range =[str10rangeOfString:str11];

        /*

         1.當需要使用int類型的變量的時候,可以像寫C的程序一樣,用int,也可以用NSInteger,但更推薦使用NSInteger,因爲這樣就不用考慮設備是32位的還是64位的。

         2.NSUInteger是無符號的,即沒有負數,NSInteger是有符號的。

         3、有人說既然都有了NSInteger等這些基礎類型了爲什麼還要有NSNumber?它們的功能當然是不同的。

         NSInteger是基礎類型,但是NSNumber是一個類。如果想要存儲一個數值,直接用NSInteger是不行的,比如在一個Array裏面這樣用:

         NSArray *array= [[NSArray alloc]init];

         [array addObject:3];//會編譯錯誤

        這樣是會引發編譯錯誤的,因爲NSArray裏面放的需要是一個類,但‘3’不是。這個時候需要用到NSNumber:

         NSMutableArray *array= [[NSMutableArray alloc]init];

         [array addObject:[NSNumber numberWithInt:3]];

         一下兩行代碼是會有警告的 因爲NSArray 是不可變的.

         NSArray *array1= [[NSArray alloc]init];

         [array1 addObject:[NSNumber numberWithInt:3]];

         Cocoa提供了NSNumber類來包裝(即以對象形式實現)基本數據類型。

         例如以下創建方法:

         + (NSNumber*)numberWithChar: (char)value;

         + (NSNumber*)numberWithInt: (int)value;

         + (NSNumber*)numberWithFloat: (float)value;

         + (NSNumber*)numberWithBool: (BOOL) value;

        將基本類型數據封裝到NSNumber中後,就可以通過下面的實例方法重新獲取它:

         - (char)charValue;

         - (int)intValue;

         - (float)floatValue;

         - (BOOL)boolValue;

         - (NSString*)stringValue;

         */

        NSUInteger location =range.location

        NSUInteger leight =range.length;

        /*

         NSUIntegeriOS上等價於unsigned int,在Mac OS X 32位上等價於unsigned int 64位上等價於unsigned 

         long。例如你printf的時候,iOS上會寫%d,但是Mac OS X上就得寫成%ld,否則如果你的編譯條件嚴格的話,會導致

        編譯失敗。此外,如果需要用OSAtomic系的函數對NSUInteger進行操作,調用函數的版本會有所不同。

         處理器名稱 32 位或 64

         Intel Core Solo 32

         Intel Core Duo 32

         Intel Core 2 Duo 64

         Intel Quad-Core Xeon 64

         Dual-Core Intel Xeon 64

         Quad-Core Intel Xeon 64

         Core i3 64  

         Core i5 64  

         Core i7 64

         */

        NSString *str12 =[[NSStringalloc]initWithString:[NSStringstringWithFormat:@"Location:%ld Leight:%ld",location,leight]];

        NSLog(@"%@",str12);

        //rangeOfString前面的參數是要被搜索的字符串,後面的是要搜索的字符

        //NSNotFound表示請求操作的某個內容或者item沒有發現,或者不存在

        if ([str10rangeOfString:str11].location!=NSNotFound) {

            NSLog(@"str10中有str11");

        }

        

       //7.從字符串的開頭一直截取到指定的位置,但不包括該位置的字符(substringToIndex)

        NSString * str13 =@"This is a String";

        NSString * str14 =[str13substringToIndex:3];

        NSLog(@"7.從字符串的開頭一直截取到指定的位置,但不包括該位置的字符 str14%@",str14);

        

        //8.以指定位置開始(包括指定位置的字符),幷包括之後的全部字符

        NSString * str15 =@"This is a String";

        NSString * str16 =[str15substringFromIndex:3];

        NSLog(@"8.以指定位置開始(包括指定位置的字符),幷包括之後的全部字符 str16%@",str16);

        

        //9.按照所給出的位置,長度,任意地從字符串中截取子串

        NSString * str17 =@"This is a String";

        NSString * str18 =[str17substringWithRange:NSMakeRange(0,4)];

        NSLog(@"9.按照所給出的位置,長度,任意地從字符串中截取子串:%@",str18);

        

       //10.把一個字符串接在另一個字符串的末尾

        NSMutableString * str19 = [[NSMutableStringalloc]initWithString:@"This is a NSMutableString"];

        [str19appendString:@",add"];

        [str19appendFormat:@"%@",[NSStringstringWithFormat:@"%d",2]];

        NSLog(@"10.把一個字符串接在另一個字符串的末尾:%@",str19);

        

        //11.在指定位置插入字符串

        NSMutableString * str20 = [[NSMutableStringalloc]initWithString:@"This is a String"];

        [str20insertString:@"Hi"atIndex:0];

        NSLog(@"11.在指定位置插入字符串:%@",str20);

        

       //12.setString方法

        NSMutableString * str21 = [[NSMutableStringalloc]initWithString:@"This is a String"];

        [str21setString:@"hello"];

        NSLog(@"12.setString方法:%@",str21);

        

        //13.用指定字符串替換字符串中某指定位置、長度的字符串

        NSMutableString * str22 =[[NSMutableStringalloc]initWithString:@"This is a String"];

        [str22replaceCharactersInRange:NSMakeRange(0,4)withString:@"hello"];

        NSLog(@"13.用指定字符串替換字符串中某指定位置、長度的字符串:%@",str22);

        

       //14.擴展路徑 將路徑中的代字符擴展成用戶主目錄(~)或指定用戶的主目錄(~user)

        NSString * str23 =@"~/geek/text.txt";

        NSString * str24 =[str23stringByExpandingTildeInPath];

        NSLog(@"14.擴展路徑:%@",str24);

       NSLog(@"str23%@",[str24stringByAbbreviatingWithTildeInPath]);

        

        //15.文件擴展名

        NSString * str25 =@"~/geek/text.text";

        NSLog(@"15.文件擴展名:%@",[str25 pathExtension]);


NSString 常用方法總結

+(id)stringWithContentsOfFile:path encoding:enc err 創建一個新字符串並將其設置爲 path 指定文件的內容,使用字符編碼 enc,在err 上返回錯誤
+(id)stringWithContentsOfURL:url encoding:enc err 創建一個新字符串並將其設置爲 url 所指向的內容,使用字符編碼 enc,在err 上返回錯誤
+(id)string 創建一個新的空字符串
+(id)stringWithString:nsstring 創建一個新字符串,將其內容設置爲 nsstring 內容
-(id)initWithString:nsstring 將字符串內容設置爲 nsstring 內容
-(id)initWithContentsOfFile:path encoding:enc error:err 字符串設置爲 path 指定文件的內容,使用字符編碼 enc,在err 上返回錯誤
-(id)initWithContentsOfURL:url encoding:enc error:err 將字符串設置爲 url 所指向的內容,使用字符編碼 enc,在err 上返回錯誤
-(UNSigned int)length 返回字符串中字符數目
-(unichar)characterAtindex:i 返回索引i 所在UniCode 字符
-(NSString*)substringFromIndex:i 返回從索引 i 開始到結尾的子字符串
-(NSString*)substringWithRange:range 根據指定範圍返回子字符串
-(NSString*)substringToIndex:i 返回從字符串開始到 索引 i 的子字符串
-(NSComparator*)caseInsensitiveCompare:nsstring 比較兩個字符串大小,忽略大小寫
-(NSComparator*)compare:nsstring 比較兩個字符串大小
-(BOOL)hasPrefix:nsstring 測試字符串是否以 nsstring 開始
-(BOOL)hasSuffix:nsstring 測試字符串是否以 nsstring 結尾
-(BOOL)isEqualToString:nsstring 測試兩個字符串是否相等
-(NSString*)capitalizedString 返回字符串,串中的每個單詞的首字母大寫,其餘字母小寫
-(NSString*)lowercaseString 返回轉換爲小寫的字符串
-(NSString*)uppercaseString 返回轉換爲大寫的字符串
-(const char*)UTF8String 返回UTF8編碼格式的字符串
-(double)doubleValue 返回轉換爲double 類型的字符串
-(float)floatValue 返回轉換爲 float 類型的字符串
-(NSInteger)integerValue 返回轉換爲 NSInteger 類型的新字符串
-(int)intvalue 返回轉換爲 int 的字符串

 

 

 

NSMutableString 可修改字符串常用方法
+(id)stringWithCapacity:size 創建一個字符串,容量爲size大小
-(id)initWithCapacity:size 初始化一個字符串,容量爲size
-(void)setString:nsstring 將字符串設置爲 nsstring
-(void)appendString:nsstring 在字符串末尾追加字符串 nsstring
-(void)deleteCharatersInRange:range 刪除指定range 中的字符
-(void)insertString:nsstring atIndex:i 以索引 i 爲起始位置插入 nsstring
-(void)replaceCharatersInRange;range withString:nsstring 使用 nsstring 替換 range 指定的字符
-(void)replaceOccurrencesOfString:nsstring withString:nsstring2 options:opts range:range 根據選項 opts ,使用指定 range 中的nsstring2 替換所有的 nsstring


下載鏈接:http://download.csdn.net/detail/u013252054/6794995




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