Objective-C 筆記 字串操作,objective-c字串
這次總結下OC裡一些對字串的一些操作。
建立字串對象時,會建立一個內容不可更改的對象,稱為不可變對象。可以使用NSString類處理不可變字串。你經常需要處理字串並更改字串中的字元。例如,可能希望從字串中刪除一些字元,或對字串執行搜尋替換操作。這種類型的字串是使用NSMutableString類處理的。
1 // 2 // main.m 3 // Number_String_List_15 4 // 5 // Created by SeanAstin on 15/12/30. 6 // Copyright © 2015年 SeanAstin. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h>10 11 int main(int argc, const char * argv[]) {12 @autoreleasepool {13 NSString *str1 = @"This is string A";14 NSString *str2 = @"This is string B";15 NSString *res;16 NSComparisonResult compareResult;17 18 //計算字串中的值19 NSLog(@"Length of str1: %lu",[str1 length]);20 21 //將一個字串複製到另一個字串22 res = [NSString stringWithString:str1];23 NSLog(@"copy: %@",res);24 25 //將一個字串複製到另一個字串的末尾26 str2 = [str1 stringByAppendingString:str1];27 NSLog(@"Concatentation: %@",str2);28 29 //驗證兩個字串是否相等30 if([str1 isEqualToString:res] == YES)31 NSLog(@"str1 == res");32 else33 NSLog(@"str1 != res");34 35 //驗證一個字串是否小於、等於或大於另一個字串36 compareResult = [str1 compare:str2];37 if(compareResult == NSOrderedAscending)38 NSLog(@"str1 < str2");39 else if(compareResult == NSOrderedSame)40 NSLog(@"str1 == str2");41 else//必須是NSorderedDescending42 NSLog(@"str1 > str2");43 44 //將字串轉換為大寫45 res = [str1 uppercaseString];46 NSLog(@"Uppercase conversion: %s",[res UTF8String]);47 48 //將字串轉換為小寫49 res = [str1 lowercaseString];50 NSLog(@"Lowercase conversion: %@",res);51 }52 return 0;53 }
1 // 2 // main.m 3 // Number_String_List_15 4 // 5 // Created by SeanAstin on 15/12/30. 6 // Copyright © 2015年 SeanAstin. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h>10 11 int main(int argc, const char * argv[]) {12 @autoreleasepool {13 NSString *str1 = @"This is string A";14 NSString *str2 = @"This is string B";15 NSString *res;16 NSRange subRange;17 18 //從字串中提取前3個字元19 res = [str1 substringToIndex:3];20 NSLog(@"First 3 chars of str1: %@",res);21 22 //提取從索引5開始直到結尾的子字串23 res = [str1 substringFromIndex:5];24 NSLog(@"Chars from index 5 of str1: %@",res);25 26 //提取從索引8開始索引到13的子字串(6個字元)27 res = [[str1 substringFromIndex:8] substringToIndex:6];28 NSLog(@"Chars from index 8 through 13: %@",res);29 30 //更簡單的方法31 res = [str1 substringWithRange:NSMakeRange(8, 6)];32 NSLog(@"Chars from index 8 through 13: %@",res);33 34 //從另一個字串中尋找一個字串35 subRange = [str1 rangeOfString:@"string A"];36 NSLog(@"String is at index %lu, length is %lu",subRange.location,subRange.length);37 subRange = [str1 rangeOfString:@"string B"];38 if(subRange.location == NSNotFound)39 NSLog(@"String not found");40 else41 NSLog(@"String is at index %lu, length is %lu",subRange.location,subRange.length);42 43 }44 return 0;45 }
NSMutableString類可以用來建立可以更改字元的字串對象。因為是 NSString類的子類,所以可以使用NSString類的所有方法。
在講述可變於不可變字串對象時,我們談到了更改字串中的實際字元。任意一個可變或不可變字串對象在程式執行期間,總是可以被設為完全不同的字串對象的。
1 // 2 // main.m 3 // Number_String_List_15 4 // 5 // Created by SeanAstin on 15/12/30. 6 // Copyright © 2015年 SeanAstin. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h>10 11 int main(int argc, const char * argv[]) {12 @autoreleasepool {13 NSString *str1 = @"This is string A";14 NSString *search,*replace;15 NSMutableString *mstr;16 NSRange substr;17 18 //從不可變字串建立可變字串19 20 mstr = [NSMutableString stringWithString:str1];21 NSLog(@"%@",mstr);22 23 //插入字元24 [mstr insertString: @" mutable" atIndex:7];25 NSLog(@"%@",mstr);26 27 //插入末尾進行有效拼接28 [mstr insertString:@" and string B" atIndex:[mstr length]];29 NSLog(@"%@",mstr);30 31 //直接使用appendString32 [mstr appendString:@" and string C"];33 NSLog(@"%@",mstr);34 35 //根據範圍刪除子字串36 [mstr deleteCharactersInRange:NSMakeRange(16, 13)];37 NSLog(@"%@",mstr);38 39 //尋找然後將其刪除40 substr = [mstr rangeOfString:@"string B and "];41 if(substr.location != NSNotFound){42 [mstr deleteCharactersInRange:substr];43 NSLog(@"%@",mstr);44 }45 46 //直接設定為可變的字串47 [mstr setString:@"This is string A"];48 NSLog(@"%@",mstr);49 50 //替換一些字元51 [mstr replaceCharactersInRange:NSMakeRange(8, 8) withString:@"a mutable string"];52 NSLog(@"%@",mstr);53 54 //尋找和替換55 search = @"This is";56 replace = @"An example";57 substr = [mstr rangeOfString: search];58 if(substr.location != NSNotFound){59 [mstr replaceCharactersInRange:substr withString:replace];60 NSLog(@"%@",mstr);61 }62 63 //尋找和替換所有匹配項64 search = @"a";65 replace = @"X";66 substr = [mstr rangeOfString:search];67 while(substr.location != NSNotFound){68 [mstr replaceCharactersInRange:substr withString:replace];69 substr = [mstr rangeOfString:search];70 71 }72 NSLog(@"%@",mstr);73 }74 return 0;75 }