Objective-C 中處理字符串的兩個核心類是 NSString 與 NSMutableString ,這兩個類最大的區別就是NSString 創建賦值以后該字符串的內容與長度不能再動態的更改,只能給這個字符串重新賦值。而NSMutableString(可變字符串)創建賦值以后可以動態在該字符串上更改內容與長度。
普通字符串
//這種創建方式會在堆區開辟空間并儲存。
NSString *str = [[NSString alloc] initWithFormat:@"我今年%d歲了",18];
NSString *name1 = [NSString stringWithFormat:@"小明"];
//下面的是字符串的字面量形式(更直觀),方便程序員書寫,也叫語法糖
NSString *name2 = @"小明";
//讀取字符串的長度
NSInteger length = name2.length;
//獲取字符串中的字符
unichar c = [name1 characterAtIndex:0];
NSLog(@"----%c",c);
上面的代碼中,name1是創建在堆區,name2是創建在常量區,他們兩個的指針地址不同,所以如果我們要判斷兩個字符串的內容是否相同可以用isEqualToString方法。
if ([name1 isEqualToString:name2]) {
NSLog(@"字符串內容相同");
}else {
NSLog(@"字符串內容不同");
}
if語句的輸出
**字符串的比較**
//如果前面大于后面輸出1,如果前面小于后面輸出-1,如果相等輸出0;
NSComparisonResult compareResult = [@"a" compare:@"abc"];
**字符串的截取**
//從索引值為1的位置截取字符串,(包含1的位置),一直截到最后,
NSString *substring = [@"abcdefg" substringFromIndex:1];
//從字符串開始截取到下標為1的元素(不包括下標位置的元素)
NSString *substring1 = [@"abcdefg" substringToIndex:1];
//截取某一段字符串(range代表一個范圍,location代表截取的開始位置,length代表截取的長度);
NSString *substring2 = [@"abcdefg" substringWithRange:NSMakeRange(1, 2)];
字符串的截取.png
**字符串的拼接**
//在原有的字符串后面追加一個字符串
NSString *appendString = [@"abc" stringByAppendingString:@"def"];
//在原有的字符串后面追加數字
NSString *appendString1 = [@"abc" stringByAppendingFormat:@"%d",123];
**字符串的替換**
//方法一:
NSString *contentString = @"hi,小明";
//獲取’小明‘在contentString中所占的范圍
NSRange range = [contentString rangeOfString:@"小明"];
if (range.length != 0) {
//替換該范圍的字符串為@“小紅”
NSString *replaceString = [@"hi,小明" stringByReplacingCharactersInRange:range withString:@"小紅"];
NSLog(@"%@",replaceString);
}
//方法二:
//全部替換,即將字符串內的所有的小明都替換成小紅
NSString *replaceString1 = [contentString stringByReplacingOccurrencesOfString:@"小明" withString:@"小紅"];
字符串的轉換:
//字符串類型轉換成int類型
NSInteger number = [@"123" intValue];
number = number + 1;
//其他數據類型轉換字符串
NSString *other = [NSString stringWithFormat:@"%ld",number];
//把小寫的字符串轉換成大寫
NSString *uppercaseString = [@"abc" uppercaseString];
//把上一句大寫的字符串轉換成小寫
NSString *lowercaseString = [uppercaseString lowercaseString];
//將首字母大寫(按單詞分,每一個單詞的首字母大寫,其他字母都小寫。)
NSString *capitalizedString = [@"i love you" capitalizedString];
字符串的替換.png
字符串前綴和后綴的判斷:
//字符串前綴的判斷用hasPrefix
if ([@"abcdef" hasPrefix:@"abc"]) {
NSLog(@"abc為該字符串前綴");
}else {
NSLog(@"abc不是該字符串前綴");
}
//字符串后綴的判斷用hasSuffix
if ([@"abcdef" hasSuffix:@"def"]) {
NSLog(@"abc為該字符串后綴");
}else {
NSLog(@"abc不是該字符串后綴");
}
字符串前綴和后綴的判斷.png
可變字符串
//在堆區開辟空間創建可變字符串。
NSMutableString *string1 = [[NSMutableString alloc]initWithString:@"abcdefg"];
//也可以使用便利構造器創建
NSMutableString *string2 = [NSMutableString stringWithFormat:@"abcdefg"];
//在原字符串上直接追加字符串
[string1 appendString:@"asdf"];
//在原字符串上直接追加格式化字符串
[string2 appendFormat:@"%d",123];
//插入字符串
//將一個字符串插入到一個索引位置處
[string1 insertString:@"www." atIndex:0];
//刪除指定位置的字符:1是索引,2是長度
[string1 deleteCharactersInRange:NSMakeRange(1, 2)];
可變字符串的操作.png