NSString- 字串物件快速範例
NSString -> @”Hello”
NSString 是Objective-C中被使用字串相類處理的物件,它使用Unicode(UTF-16)方式儲存字串,意味著支援多國語言內容,與C的Character有很大的不同,NSString是位於Foundation的Framework之中。
建立字串
後期Objective-C已經支援literal
方式建立字串:
//-----------start----------- NSString *webSiteName = @"Coding With Danny"; NSLog(@"%@",webSiteName); //------------end------------
輸出結果:
2014-12-26 14:58:06.513 ObjC-Test[24519:8873271] Coding With Danny
當然也可以使用instancetype
回傳值的方法直接建立,建立過程中已經包含紀憶體配置(alloc)與初始化:
//-----------start----------- NSString *webSiteName = @"Coding With Danny"; NSString *message = [NSString stringWithFormat:@"%@ --",webSiteName]; NSLog(@"%@",webSiteName); NSLog(@"%@",message); //------------end------------
輸出結果:
2014-12-26 14:58:04.643 ObjC-Test[24519:8873271] Coding With Danny 2014-12-26 14:58:04.643 ObjC-Test[24519:8873271] Coding With Danny --
合併字串
//-----------start----------- NSString *webSiteName = @"Coding With Danny"; NSString *message = [NSString stringWithFormat:@"%@",webSiteName]; message = [message stringByAppendingString:@" 2014"]; NSLog(@"%@",webSiteName); NSLog(@"%@",message); //------------end------------
輸出結果:
2014-12-26 14:59:15.186 ObjC-Test[24555:8879388] Coding With Danny 2014-12-26 14:59:15.186 ObjC-Test[24555:8879388] Coding With Danny 2014
搜尋字串
//-----------start----------- NSString *webSiteName = @"Coding With Danny"; NSString *message = [NSString stringWithFormat:@"%@",webSiteName]; message = [message stringByAppendingString:@" 2014"]; NSLog(@"字串:%@",message); NSRange searchResult = [message rangeOfString:@"2014"]; if (searchResult.location == NSNotFound) { NSLog(@"搜尋字串:2014 未找到"); } else { NSLog(@"搜尋字串:2014 已經找到位於第%lu開始,長度為%lu",searchResult.location,searchResult.length); } //------------end------------
輸出結果:
2014-12-26 15:01:25.832 ObjC-Test[24623:8891369] 字串:Coding With Danny 2014 2014-12-26 15:01:25.833 ObjC-Test[24623:8891369] 搜尋字串:2014 已經找到位於第18開始,長度為4
分割字串
將字串分割所能用的方法有從字串頭開始並指定長度來擷取字串的substringToIndex
、指定開始位置並指定長度擷取字串的substringFromIndex
及使用window框概念的substringWithRange
,NSRage的結構包含位置(Location)、長度(lehgth)。
//-----------start----------- NSString *webSiteName = @"Coding With Danny"; NSString *message = [NSString stringWithFormat:@"%@",webSiteName]; message = [message stringByAppendingString:@" 2014"]; NSLog(@"字串:%@",message); NSLog(@" 12345678901234567890"); NSLog(@"從頭擷取前3個字的內容為:%@", [message substringToIndex:3]); NSLog(@"從第六個字開始擷取內容到結尾為:%@", [message substringFromIndex:6]); NSRange range = NSMakeRange(1, 5); NSLog(@"擷取從頭算起第1字之後開始(不包含位置1),長度為5的字串內容為:%@", [message substringWithRange:range]); //也可以使用substringToIndex、substringFormatIndex完成substringWithRange的功能 NSString *stringRange1 = [[message substringFromIndex:1] substringToIndex:5]; NSLog(@"使用substringFromIndex、substringToIndex達成substringWithRange效果:%@",stringRange1); //------------end------------
輸出結果
2014-12-26 15:21:18.980 ObjC-Test[25073:8948689] 字串:Coding With Danny 2014 2014-12-26 15:21:18.980 ObjC-Test[25073:8948689] 12345678901234567890 2014-12-26 15:21:18.981 ObjC-Test[25073:8948689] 從頭擷取前3個字的內容為:Cod 2014-12-26 15:21:18.981 ObjC-Test[25073:8948689] 從第六個字開始擷取內容到結尾為: With Danny 2014 2014-12-26 15:21:18.981 ObjC-Test[25073:8948689] 擷取從頭算起第1字之後開始(不包含位置1),長度為5的字串內容為:oding 2014-12-26 15:21:18.982 ObjC-Test[25073:8948689] 使用substringFromIndex、substringToIndex達成substringWithRange效果:oding
取代字串
//-----------start----------- NSString *webSiteName = @"Coding With Danny"; NSString *message = [NSString stringWithFormat:@"%@",webSiteName]; message = [message stringByAppendingString:@" 2014"]; NSLog(@"字串:%@",message); NSRange range = NSMakeRange(1, 5); NSLog(@"擷取從頭算起第1字之後開始(不包含位置1),長度為5的字串內容為:%@ 利用此Range來當做取代的範圍", [message substringWithRange:range]); NSString *stringReplaced = [message stringByReplacingCharactersInRange:range withString:@"-----"]; NSLog(@"%@",message); NSLog(@"%@",stringReplaced); //------------end------------
輸出結果:
2014-12-26 15:27:21.149 ObjC-Test[25197:8972430] 字串:Coding With Danny 2014 2014-12-26 15:27:21.149 ObjC-Test[25197:8972430] 擷取從頭算起第1字之後開始(不包含位置1),長度為5的字串內容為:oding 利用此Range來當做取代的範圍 2014-12-26 15:27:21.149 ObjC-Test[25197:8972430] Coding With Danny 2014 2014-12-26 15:27:21.149 ObjC-Test[25197:8972430] C----- With Danny 2014
大小寫轉換:
//-----------start----------- NSString *webSiteName = @"Coding With Danny"; NSString *message = [NSString stringWithFormat:@"%@",webSiteName]; message = [message stringByAppendingString:@" 2014"]; NSLog(@"小寫:%@",[message lowercaseString]); NSLog(@"大寫:%@",[message uppercaseString]); //------------end------------
輸出結果:
2014-12-26 15:29:45.682 ObjC-Test[25264:8982469] 小寫:coding with danny 2014 2014-12-26 15:29:45.682 ObjC-Test[25264:8982469] 大寫:CODING WITH DANNY 2014
字串轉數值:
字串轉成數值類型時如果內容非符合要轉換成該類型的數值類型時,轉換後的值為0
。
//-----------start----------- NSString *stringNumber = @"2015"; NSLog(@"%i",[stringNumber intValue]); NSLog(@"%ld",[stringNumber integerValue]); NSString *stringMuNumber = @"a201b5包含非字串內容"; NSLog(@"%i",[stringMuNumber intValue]); NSLog(@"%ld",[stringMuNumber integerValue]); // NSString *stringFloatNumber = @"1"; NSLog(@"%f",[stringFloatNumber floatValue]); stringFloatNumber = @"1.0345"; NSLog(@"%f",[stringFloatNumber floatValue]); //------------end------------
輸出結果:
2014-12-26 15:36:23.836 ObjC-Test[25419:9004151] 2015 2014-12-26 15:36:23.836 ObjC-Test[25419:9004151] 2015 2014-12-26 15:36:23.836 ObjC-Test[25419:9004151] 0 2014-12-26 15:36:23.836 ObjC-Test[25419:9004151] 0 2014-12-26 15:36:23.836 ObjC-Test[25419:9004151] 1.000000 2014-12-26 15:36:23.836 ObjC-Test[25419:9004151] 1.034500