NSString字串類型-學習總結,
1.字串的建立(1)建立常量字串
NSString *str = @"This is a String"; //str是變數名
(2)建立空的字串,給字串賦值
NSString *str = [NSString alloc] init];
str = @"科比 布萊恩特"; //直接賦值
(3)花樣賦值
<1>使用初始化方法:initWithFormat:根據一定的字串格式來初始化字串對象,將格式串中的內容寫入字串對象空間內
NSString *str = [[NSStringalloc] initWithFormat:@"iphon%@",@"e6"];
<2>使用便利構造器stringWithFormat:來快速建立對象,內部進行alloc以及初始化操作,內部將initWithFormat初始化方法來進行初始化
NSString *str =[ NSString stringWithFormat:@"逗比%@",@"兒"];
<3>用標準C語言建立字串
char *name = "say hello";
NSString *sayHello = [[NSString alloc] initWithUTF8String:name];
2.求取字串的長度(關鍵詞:length)
NSString *str =@"明明知道相思苦";
NSUInteger length = str.length; //或者 [str length]也可以 length 在OC中是屬性存在,可以直接調用
NSLog(@"%ld",length);
3.字串的拼接(關鍵詞:append)
NSString *str1 = @"波多野結衣";
NSString *str2 = @"是AV女憂";
方法1:
NSString *str3 = [str1 stringByAppendingString:str2]; //由於NSString是不可變字串,因此只能返回新的字串,元字串不變
方法2
NSString *str4 = [str1 stringByAppendingFormat:@"%@是小日本%@",@"18,"@"的明星"];
4,字串的截取(關鍵詞:sub)
NSString *str = @"say goodbye";
<1>從指定位置開始(包括該指定位置的字元),截取之後所有字元
NSString *str1 = [str substringFromIndex:3];
<2>從字串開頭一直截取到指定位置,但是不包括該位置的字元
NSString *str2 = [str substringToIndex:3];
<3>按照所給的位置和長度,從字串中截取子串
NSString *str3 = [str substringWithRange:NSMakeRange(2, 2)]; // NSMakeRange 快速構建NSRange(下標,長度)
5,字串大小寫轉換
NSString *str = @"xiAo m/eI mei";
NSLog(@"%@",[str uppercaseString]); //全部改成大寫
NSLog(@"%@",[str lowercaseString]); //全部改成小寫
NSLog(@"%@",[str capitalizedString]); //首字元大寫,包括空格和字元斷開的情況,也改成大寫
6.字串各種比較
NSString *str1 = @"hello boby";
NSString *str2 = @"hello dowhat";
<1> 比較字串的地址
BOOL b = (str1 == str2); // 比的是兩個字串的記憶體位址
NSLog(@"%d",b);
<2>兩個字串的值是否相等
BOOL b = [str1 isEqualToString:str2]; //比的兩個字串的內容是否相同,返回一個BOOL類型值
NSLog(@"%d",b);
<3> 對字串大小進行比較
NSComparisonResult result = [str1 compare:str2]; //按照字母進行比較,設定一個枚舉的類型傳回值,傳回值(NSOrderedSame NSOrderedAscending NSOrderedDescending)
switch (result) {
case NSOrderedSame:
NSLog(@"相同");
break;
case NSOrderedAscending:
NSLog(@"前小後大");
break;
case NSOrderedDescending:
NSLog(@"前大後效");
break;
default:
break;
}
<4>判斷字串是否以某個字元開頭/結尾(關鍵詞has)
BOOL b3 = [str1 hasPrefix:@"boby"]; //對字串首碼進行判斷
BOOL b4 = [str2 hasSuffix:str1]; // 對字串尾碼進行判斷
<5>尋找字串中是否包含某字元
NSRange range = [str rangeOfString:@"hi"];
if (range.location != NSNotFound) {
}
else{
}
7.字串拷貝
NSString *str8 = [NSString stringWithString:str3]; //字串屬性遵循copying協議
NSLog(@"%@",str8);
8.字元中內容的替換(關鍵字replacing)
NSString *string1 = @"abcdefg",*string2 = @"higkllmn";
NSString *str1 = [string1 stringByReplacingCharactersInRange:NSMakeRange(2, 3) withString:string2]; //從中間截取幾個字串替換為withString後面的字元
NSString *str2= [string1 stringByReplacingOccurrencesOfString:@"a"withString:@"ABV"]; //把字串中的出現過的字元"a"全部替換為"ABV"
9. 可變的字串類型
NSString是不可變字串,不能刪除字元或添加字元(上面的操作都會開闢一個新的字串來儲存添加或替換後的字串,原串並不會改變).
Cocoa提供了一個 NSString的子類: NSMutableString.由於是NSString的子類,所以NSMutableString繼承了NSString的所有方法.
當我們建立可變的字串(或者之後學習的所有可變數組,字典,集合等)一定要先初始化,再進行使用.
<1>初始化方法
NSMutableString *mutablestring = [NSMutableString string]; //類方法初始化(使用極少)
NSMutableString *mstr1 = [[NSMutableString alloc] init]; //init執行個體方法初始化
NSMutableString *mstr2 = [[NSMutableString alloc] initWithCapacity:0]; //指定初始化方法,capacity是申請記憶體空間,但兄台那個會根據字串的增減自動調整記憶體空間大小(工程中使用較多)
<2>自己專屬的SDK
[mstr1 setString:@"嘿嘿嘿"]; //對一個字串進行賦值或重設(替換原來的內容)
NSMutableString *mstr3 = [NSMutableString stringWithFormat:@"四是四,十是十,四十是四十"];
[mstr3 insertString:@"逗比"atIndex:1]; //插入一個字串,在某一個位置
[mstr3 deleteCharactersInRange:NSMakeRange(3, 2)]; //刪除某一個範圍內的字串
NSMutableString *m1 = [NSMutableStringstringWithCapacity:0];
NSMutableString *m2 = [NSMutableStringstringWithString:@"Tom"];
[m1 appendString:@"哈哈"]; //給字串賦值(OC比較靈活)
[m1 appendFormat:@"age is %d",12]; //在後面插入某一段字串
[m1 replaceCharactersInRange:NSMakeRange(3, 2) withString:@"逗比"]; //替換掉字元竄中的內容,在自己選擇位置