IOS學習筆記40--NNString各種五花八門的文法

來源:互聯網
上載者:User

Objective-C 中核心處理字串的類是 NSString 與 NSMutableString ,這兩個類最大的區別就是NSString 建立賦值以後該字串的內容與長度不能在動態更改,除非重新給這個字串賦值。而NSMutableString 建立賦值以後可以動態在該字串上更改內容與長度。

 

1.建立NSString字串

 

NSString 與 char* 最大的區別就是 NSString是一個objective對象,而char* 是一個位元組數組。@+" 字串 " 這個符號為objective-c NSString 字串常量的標準用法,char* 建立的時候 無需添加@

C代碼  - (void)viewDidLoad 

    [super viewDidLoad]; 
     
    //經典的字串賦值 
    NSString *str0 = @"my name is justcoding !"; 
     
    //字串格式化合并分別包括 
    //NSString*類型 int類型 char*類型  
    NSString *str1 = [NSString stringWithFormat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"justcoding@gmail.com"]; 
     
    //字串賦值 參數中只可以寫一個字串 和第一種很像 
    NSString *str2 = [NSString stringWithString:@"我是字串"]; 
    
    //字串轉換為utf-8格式 參數為char*類型 
    NSString *str3 = [NSString stringWithUTF8String:"字串轉換utf-8格式"]; 
     
     
    //字串合并 
    int i  = 100; 
    char*c = "xuanyusong"; 
    NSString *temp = @"我是臨時字串"; 
     
    //在字串temp的基礎繼續添加 int i 與 char* c 組成一個新的字串 
    NSString *str4 = [temp stringByAppendingFormat:@"整型: %d 字元型 :%s",i,c]; 
     
    //在字串temp的基礎繼續添加temp 並組成一個新的字串 
    NSString *str5 = [temp stringByAppendingString:temp];  
     
    //字串輸出 
    NSLog(@"str0 = %@", str0); 
    NSLog(@"str1 = %@", str1); 
    NSLog(@"str2 = %@", str2); 
    NSLog(@"str3 = %@", str3); 
    NSLog(@"str4 = %@", str4); 
    NSLog(@"str5 = %@", str5); 
     

 

2.字串的遍曆

 

每一個字串其實是由若干個char字元組成,字串的遍曆實際上就是將字串中的每一個字元提取出來。

C代碼  - (void)viewDidLoad 

    [super viewDidLoad]; 
     
    //經典的字串賦值 
    NSString *str = @"YUSONGMOMO"; 
     
    //字串的長度 
    int count = [str length]; 
     
    NSLog(@"字串的長度是%d",count); 
     
    //遍曆字串中的每一個字元 
    for(int i =0; i < count; i++) 
    { 
        char c = [str characterAtIndex:i]; 
        NSLog(@"字串第 %d 位為 %c",i,c); 
    } 
     

 
3.字串的比較

 

isEqualToString 比較字串是否完全相等,大小寫不一樣也無法完全符合。

hasPrefixe 匹配字串頭

haSuffix     匹配字串的尾巴

C代碼  - (void)viewDidLoad 

    [super viewDidLoad]; 
     
     
    NSString *str0 = @"justcoding"; 
    NSString *str1 = @"justcoding"; 
     
     
    //字串完全相等比較 
    if([str0 isEqualToString:str1]) 
    { 
        NSLog(@"字串完全相等"); 
    } 
     
    //字串以開頭比較 
    if([str0 hasPrefix:@"just"]) 
    { 
        NSLog(@"字串str0以just開頭"); 
    } 
     
    //字串以結尾比較 
    if([str1 hasSuffix:@"coding"]) 
    { 
        NSLog(@"str1字串以coding結尾"); 
    } 

  C代碼  //isEqualToString方法     
NSString *astring01 = @"This is a String!"; 
NSString *astring02 = @"This is a String!"; 
BOOL result = [astring01 isEqualToString:astring02]; 
NSLog(@"result:%d",result); 
  C代碼  //compare方法(comparer返回的三種值)     
NSString *astring01 = @"This is a String!"; 
NSString *astring02 = @"This is a String!";     
BOOL result = [astring01 compare:astring02] = = NSOrderedSame;     
NSLog(@"result:%d",result);     
//NSOrderedSame 判斷兩者內容是否相同 
  C代碼  NSString *astring01 = @"This is a String!"; 
NSString *astring02 = @"this is a String!"; 
BOOL result = [astring01 compare:astring02] = = NSOrderedAscending;     
NSLog(@"result:%d",result); 
//NSOrderedAscending 判斷兩對象值的大小(按字母順序進行比較,astring02大於astring01為真) 
  C代碼  NSString *astring01 = @"this is a String!"; 
NSString *astring02 = @"This is a String!"; 
BOOL result = [astring01 compare:astring02] = = NSOrderedDescending;     
NSLog(@"result:%d",result);     
//NSOrderedDescending 判斷兩對象值的大小(按字母順序進行比較,astring02小於astring01為真) 
  C代碼  //不考慮大 小寫比較字串1 
NSString *astring01 = @"this is a String!"; 
NSString *astring02 = @"This is a String!"; 
BOOL result = [astring01 caseInsensitiveCompare:astring02] = = NSOrderedSame;     
NSLog(@"result:%d",result);     
//NSOrderedDescending判斷兩對象值的大小(按字母順序進行比較,astring02小於astring01為 真) 
  C代碼  //不考慮大小寫比較字串2 
NSString *astring01 = @"this is a String!"; 
NSString *astring02 = @"This is a String!"; 
BOOL result = [astring01 compare:astring02 options:NSCaseInsensitiveSearch | NSNumericSearch] = = NSOrderedSame;     
NSLog(@"result:%d",result);     
//NSCaseInsensitiveSearch:不區分大小寫比較 NSLiteralSearch:進行完全比較,區分大小寫 NSNumericSearch:比較字串的字元個數,而不是字元值。 

 

判斷的方法可以利用 NSString 類別中 caseInsensitiveCompare: 所回傳 -1、0 或是 1 的數值,判定兩個字串之間得排序關係,其程式瑪如下。


C代碼  NSString *string = @"0"; 
 NSComparisonResult result = [string caseInsensitiveCompare:@"A"]; 
 
 switch (result) { 
 case NSOrderedAscending: 
 NSLog(@"升冪"); 
 break; 
 
 case NSOrderedSame: 
 NSLog(@"忽略大小寫相同的字串"); 
 break; 
 
 case NSOrderedDescending: 
 NSLog(@"降冪"); 
 break; 
 
 default: 
 NSLog(@"無法判定"); 
 break; 
 } 
 
4. 檔案字串操作(讀寫)

 

C代碼  //從檔案讀取字串:initWithContentsOfFile方法 
NSString *path = @"astring.text"; 
NSString *astring = [[NSString alloc] initWithContentsOfFile:path]; 
NSLog(@"astring:%@",astring); 
[astring release]; //astring=nil; 
  C代碼  //寫字串到檔案:writeToFile方法 
NSString *astring = [[NSString alloc] initWithString:@"This is a String!"]; 
NSLog(@"astring:%@",astring); 
NSString *path = @"astring.text";     
[astring writeToFile: path atomically: YES]; 
[astring release];  //astring=nil; 
 
* ios5 不支援release iOS應用開發:什麼是ARC?

 

C代碼  //擴充路徑 
NSString *Path = @"~/NSData.txt"; 
NSString *absolutePath = [Path stringByExpandingTildeInPath]; 
NSLog(@"absolutePath:%@",absolutePath); 
NSLog(@"Path:%@",[absolutePath stringByAbbreviatingWithTildeInPath]); 

 

C代碼  //副檔名 
NSString *Path = @"~/NSData.txt"; 
NSLog(@"Extension:%@",[Path pathExtension]); 
 
5. 字串的截取和大小寫

C代碼  //改變字串的大小寫 
NSString *string1 = @"A String"; 
NSString *string2 = @"String"; 
NSLog(@"string1:%@",[string1 uppercaseString]);//大寫 
NSLog(@"string2:%@",[string2 lowercaseString]);//小寫 
NSLog(@"string2:%@",[string2 capitalizedString]);//首字母大小 
  Java代碼  - (void)viewDidLoad 

    [super viewDidLoad]; 
     
     
    NSString *str0 = @"中文my name is xuanyusong"; 
     
    //截取字串起始點到index為4之間的內容 
    NSString * to = [str0 substringToIndex:4]; 
     
    NSLog(@"to = %@",to); 
     
    //截取字元index為2 到結尾之間的內容 
    NSString * from = [str0 substringFromIndex:2]; 
     
    NSLog(@"from = %@",from); 
     
     
    //設定截取字串的範圍  
    //從第二位開始,長度為十 
    NSRange rang = NSMakeRange(2, 10); 
    NSString * strRang = [str0 substringWithRange:rang]; 
    NSLog(@"rang = %@",strRang); 
     
    //設定字串首字母大寫 
    NSLog(@"str0首字母大寫:%@",[str0 capitalizedString]); 
    //設定字串全部內容為大寫 
    NSLog(@"str0大寫:%@",[str0 uppercaseString]); 
    //設定字元全部內容為小寫 
    NSLog(@"str0小寫:%@",[str0 lowercaseString]); 
     

 
6.搜尋字串與替換字串

C代碼  - (void)viewDidLoad 

    [super viewDidLoad]; 
     
     
    NSString *str0 = @"中文my name is xuanyusong"; 
    NSString *temp = @"is"; 
    NSRange rang = [str0 rangeOfString:temp]; 
     
    NSLog(@"搜尋的字串在str0中起始點的index 為 %d", rang.location); 
    NSLog(@"搜尋的字串在str0中結束點的index 為 %d", rang.location + rang.length); 
     
    //將搜尋中的字串替換成為一個新的字串 
    NSString *str = [str0 stringByReplacingCharactersInRange:rang withString:@"哇哢哢卡卡哢"];  
    NSLog(@"替換後字串為%@", str); 
 
     
    //將字串中" " 全部替換成 * 
    str = [str0 stringByReplacingOccurrencesOfString :@" " withString:@"@"];  
    NSLog(@"替換後字串為%@", str); 
     
     

 
拓展:使用下面這個方法整體替換字串還可以設定替換的地區。

stringByReplacingOccurrencesOfString:(NSString *)withString:(NSString *) options:(NSStringCompareOptions) range:(NSRange)

 

7.字串尾部添加

 

使用alloc在記憶體中建立字串對象後邊可以動態操作這個字串,修改與添加等。

appendstring 方法:向字串尾部添加一個字串。

appendFormat方法:向字串尾部添加多個類型的字串,可以添加任意數量與類型的字串。

C代碼  - (void)viewDidLoad 

    [super viewDidLoad]; 
     
    
    NSMutableString * str = [[NSMutableString alloc] init]; 
     
    //添加普通的字串 
    [str appendString:@"aaa"]; 
     
    //添加字串 整型 字元型 
    [str appendFormat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"justcoding@gmail.com"]; 
    
    NSLog(@"str = %@",str); 
     

 

8. 字串中刪除元素

 

stringWithString 方法:用於建立字串初始化賦值

rangeOfString方法:傳入字串返回一個在該字串中的範圍 也可以寫 NSMakeRange(0, 3) 意思是範圍在字串0位到第3位

deleteCharactersInRange:刪除字串 參數為Range 就是刪除的範圍。

C代碼  - (void)viewDidLoad 

    [super viewDidLoad]; 
     
    //建立字串 
    NSMutableString *str = [NSMutableString stringWithString:@"justcoding is best!"]; 
     
    //刪除字串中含"justcoding"的字元 
    [str deleteCharactersInRange: [str rangeOfString: @"justcoding"]];     
     
    NSLog(@"str = %@",str); 
     

 
9. 字串插入

 

stringWithString 方法:用於建立字串初始化賦值

insertString方法:第一個參數 插入的字串對象, 第二個參數 插入的位置。

C代碼  - (void)viewDidLoad 

    [super viewDidLoad]; 
     
    //建立字串 
    NSMutableString *str = [NSMutableString stringWithString:@"justcoding is"]; 
     
    //在str第10位插入字串 
    [str insertString:@"best man" atIndex:10]; 
     
    NSLog(@"str = %@",str); 
     

 
10. 字串拷貝

C代碼  - (void)viewDidLoad 

    [super viewDidLoad]; 
     
    //建立字串 
    NSMutableString *str1 = [NSMutableString stringWithString: @"字串1"]; 
    NSMutableString *str2; 
     
    //字串賦值 
    str2 = str1; 
     
    [str2 appendString: @" 和字串2"]; 
     
    NSLog (@"str1 = %@", str1); 
     
    NSLog (@"str2 = %@", str2);     

 
為什麼給str2添加資料後 str1的資料也改變了?這就是指標的魅力所在,因為我們操作的是指標,str2 = str1  意思是兩個指標同時指向一塊記憶體,那麼str2指向的記憶體內容改變以後str1當然跟著改變了。

 

11. 字串與指定類型轉換

 

如果轉換的參數非法的話不會拋出異常,好比用中文去轉整型。不會報錯 但是轉換結果為 0  ,預設值。

C代碼  - (void)viewDidLoad 

    [super viewDidLoad]; 
     
    //字串轉整型 
    NSString *str0 = @"1121"; 
    //NSString *str0 = @"中國"; 
     
    //把字串強轉成整型 
    int i = [str0 intValue]; 
     
    NSLog (@"轉換後:%i", i);  
     
    //字串轉interger 
      NSString *str1 = @"1985"; 
    // NSString *str1 = @"中國"; 
     
    //把字串強轉成interger 
    NSInteger ii = [str1 integerValue]; 
     
    NSLog (@"轉換後:%i", ii);  
     
     
     
    //字串轉double 
    NSString *str2 = @"3.145926"; 
    //NSString *str2 = @"中國"; 
     
    //把字串強轉成double 
    double d = [str2 doubleValue]; 
     
    NSLog (@"轉換後:%f", d);  
     
    //字串轉float 
    NSString *str3 = @"3.145926"; 
     //NSString *str3 = @"中國"; 
    //把字串強轉成float 
    double f = [str3 floatValue]; 
     
    NSLog (@"轉換後:%f", f);  
     

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.