字符串算是OC中非常重要和常用的一部分內(nèi)容,,OC中的字符串與我之前在學習C,C++,Java中的字符串有一定的不同,它非常類似于C++中容器的概念,,但用法卻與之還是有很大的不同,,也許是因為OC的語法就與其他我們常用的編程語言不盡相同。 這里總結(jié)一下字符串NSString與NSMutableString,。 一. NSString NSString代表字符序列不可變的字符串,,NSString的功能非常強大,OC的字符串處理比C語言的餓字符串簡單,、易用得多,。 這里我們通過一個具體的例子來進行分析。 創(chuàng)建兩個字符串對象: NSString *str1 = @"this is string A"; NSString *str2 = @"this is string B"; 計算字符串中的字符個數(shù): NSLog(@"Length of str1 : %lu" , [str1 length]); 利用stringWithString 將一個字符串復(fù)制到另一個字符串: res = [NSString stringWithString : str1]; NSLog(@"copy : %@" , res); stringByAppendingString,,將一個字符串復(fù)制到另一個字符串的末尾: str2 = [str1 stringByAppendingString:str2]; isEqualToNumber : 方法比較兩個NSNumber對象的數(shù)值,。程序會返回一個BOOL值,查看這兩個值是否相等,。 isEqualToString,,判斷兩個字符串是否相等: if([str1 isEqualToString: res] == YES) NSLog(@"str1 == res"); else NSLog(@"str1 != res"); compare : 方法測試一個值是否在數(shù)值上小于、等于或大于另一個值,。 //驗證一個字符串是否小于,、等于或大于另一個字符串 compareResult = [str1 compare: str2]; if(compareResult == NSOrderedAscending) NSLog(@"str1 < str2"); else if(compareResult == NSOrderedSame) NSLog(@"str1 == str2"); else NSLog(@"str1 > str2"); uppercaseString,將字符串轉(zhuǎn)換為大寫。 lowercaseString,將字符串轉(zhuǎn)換為小寫,。 //將字符串轉(zhuǎn)換為大寫 res = [str1 uppercaseString]; //將字符串轉(zhuǎn)換為小寫 res = [str1 lowercaseString]; 示例代碼如下:
代碼清單
stringByAppendingString,在字符串后面添加固定的字符串: str = [str stringByAppendingString:@", iOS!"]; substringToIndex,,獲取str的前10個字符組成的字符串: substringToIndex:方法創(chuàng)建了一個子字符串,包括首字符都指定的索引數(shù),,但不包括這個字符,。因為索引數(shù)是從0開始的,所以參數(shù)3表示從字符串中提取0,、1,、2,,并返回結(jié)果字符串對象。對于所有采用索引數(shù)作為參數(shù)的字符串方法,,如果提供的索引數(shù)對該字符串無效,,就會獲得Range or index out of bounds的出錯信息。 //獲取str的前10個字符組成的字符串 NSString *s1 = [str substringToIndex:10]; NSLog(@"%@" , s1); substringFromIndex,,獲取str從第5個字符開始,,與后面字符組成的字符串: //獲取str從第5個字符開始,與后面字符組成的字符串 NSString *s2 = [str substringFromIndex:5]; NSLog(@"%@" , s2); 獲取str從第5個字符開始,,到第15個字符組成的字符串: //獲取str從第5個字符開始,,到第15個字符組成的字符串 NSString *s3 = [str substringWithRange:NSMakeRange(5, 15)]; NSLog(@"%@" , s3); rangeOfString , 獲取ios在str中出現(xiàn)的位置: //獲取iOS在str中出現(xiàn)的位置 NSRange pos = [str rangeOfString:@"iOS"]; NSLog(@"ios在str中出現(xiàn)的開始位置:%ld , 長度為:%ld" , pos.location , pos.length); 示例代碼如下:
代碼清單
二. NSMutableString NSMutableString對象代表一個字符序列可變的字符串,,而且NSMutableString是NSString的子類,,因此前面介紹的NSString所包含的方法,NSMutableString都可以直接使用,,NSMutableString對象也可直接當成NSString對象使用,。 stringWithString,用不可變字符串創(chuàng)建可變字符串: //從不可變字符串創(chuàng)建可變字符串 mstr = [NSMutableString stringWithString:str1]; NSLog(@"%@" , mstr); insertString,,插入字符: //插入字符 [mstr insertString:@"mutable" atIndex:7]; NSLog(@"%@" , mstr); insertString: atIndex: ,插入末尾進行有效拼接: //插入末尾進行有效拼接 [mstr insertString:@" and string B" atIndex:[mstr length]]; NSLog(@"%@" , mstr); deleteCharactersInRange:NSMakeRange() , 根據(jù)范圍刪除子字符串: //根據(jù)范圍刪除子字符串 [mstr deleteCharactersInRange: NSMakeRange(16, 13)]; NSLog(@"%@" , mstr); 查找然后直接刪除: //查找然后將其刪除 substr = [mstr rangeOfString:@"string B and "]; if(substr.location != NSNotFound){ [mstr deleteCharactersInRange:substr]; NSLog(@"%@" , mstr); } 示例代碼如下: 1 #import <Foundation/Foundation.h> 2 3 int main(int argc, const char * argv[]) 4 { 5 6 @autoreleasepool { 7 8 // insert code here... 9 //NSLog(@"Hello, World!"); 10 11 NSString *str1 = @"this is string A"; 12 NSString *search , *replace; 13 NSMutableString *mstr; 14 NSRange substr; 15 16 //從不可變字符串創(chuàng)建可變字符串 17 mstr = [NSMutableString stringWithString:str1]; 18 NSLog(@"%@" , mstr); 19 20 //插入字符 21 [mstr insertString:@"mutable" atIndex:7]; 22 NSLog(@"%@" , mstr); 23 24 //插入末尾進行有效拼接 25 [mstr insertString:@" and string B" atIndex:[mstr length]]; 26 NSLog(@"%@" , mstr); 27 28 29 //直接使用appendString 30 [mstr appendString:@" and string C"]; 31 NSLog(@"%@" , mstr); 32 33 //根據(jù)范圍刪除子字符串 34 [mstr deleteCharactersInRange: NSMakeRange(16, 13)]; 35 NSLog(@"%@" , mstr); 36 37 //查找然后將其刪除 38 substr = [mstr rangeOfString:@"string B and "]; 39 40 if(substr.location != NSNotFound){ 41 [mstr deleteCharactersInRange:substr]; 42 NSLog(@"%@" , mstr); 43 } 44 45 46 //直接設(shè)置為可變的字符串 47 [mstr setString:@"this is string A"]; 48 NSLog(@"%@" , mstr); 49 50 //替換一些字符 51 [mstr replaceCharactersInRange:NSMakeRange(8, 6) withString:@" a mutable string"]; 52 NSLog(@"%@" , mstr); 53 54 //查找和替換 55 search = @"this is"; 56 replace = @"an example of"; 57 58 substr = [mstr rangeOfString:search]; 59 60 if(substr.location != NSNotFound){ 61 [mstr replaceCharactersInRange:substr withString:replace]; 62 NSLog(@"%@" , mstr); 63 } 64 65 //查找和替換所有的匹配項 66 search = @"a"; 67 replace = @"X"; 68 69 substr = [mstr rangeOfString:search]; 70 71 while (substr.location != NSNotFound) { 72 [mstr replaceCharactersInRange:substr withString:replace]; 73 74 } 75 76 NSLog(@"%@" , mstr); 77 78 } 79 return 0; 80 }
|
|