NSString字符串
OC兼容C語言的字符串(OC兼容所有的C語法)
char * p = "hello world";
NSLog(@"%s", p);
OC特有字符串類NSString
四種創建OC字符串對象的方法
直接創建:
NSString * str = @"hello world";NSLog(@"%@", str);
用一個字符串創建另一個字符串:
NSString * str2 = [[NSString alloc] initWithString:str]; // str是字符串對象的地址
或者 NSString * str2 = [[NSString alloc] initWithString:@"hello world"]; // @"hello world"是字符串對象地址
用一個C語言的字符串創建OC的字符串對象:
NSString * str3 = [[NSString alloc] initWithUTF8String:p]; // p是C語言字符串的首字符地址
或者 NSString * str3 = [[NSString alloc] initWithUTF8String:"hello world"];
使用格式符創建OC的字符串對象:
NSString * str4 = [[NSString alloc] initWithFormat:@"hello %d %c", 5, 'A']; // 打印出 hello 5 A
三種創建臨時字符串的方法
將C的字符串轉換成OC的字符串的對象
NSString * str1 = [NSString stringWithUTF8String: "hello world"];
使用格式符創建臨時字符串
NSString * str2 = [NSString stringWithFormat: @"%d %@ %c", 1, @"hello", 'R'];
使用一個字符串創建另一個臨時字符串
NSString * str3 = [NSString stringWithString: str];
注意:字符串不可變不可修改。
NSString的成員函數
作爲一個對象,它可以發送消息,它可以被髮送消息,並且對象自帶很多消息,也就是很多的成員方法。
NSInteger sizeOfString = [@"hello world" length];
大小寫轉換
NSString * originalString = @"This is An EXAMPLE";
// "THIS IS AN EXAMPLE"
NSString * uppercaseString = [originalString uppercaseString];
// "this is an example"
NSString * lowercaseString = [originalString lowercaseString];
// "This Is An Example"
NSString * capitalizedString = [originalString capitalizedString];
判斷字符串是否相等
BOOL ret = [str1 isEqualToString:str2]; // 判斷字符串是否相等,並返回結果
如果使用“==”判斷,只是判斷兩個變量的指針是否相同,即檢查這兩個變量是否指向內存中的同一位置。
比較字符串
NSComparisonResult ret = [str1 compare:str2];
// 比較函數,返回值是枚舉(-1,0,1分別代表小於,等於,大於)
查找子字符串NSString * str = @"I am a so bad man.";
NSString * subStr = @"so";
NSRange range = [str rangeOfString:subStr];
// NSRange是一個C語言結構體,內有兩個整數location和length,子串的位置下標和長度。
if(range.location == NSNotFound) {// 其字符串沒有找到
} else {
NSLog(@"%d, %d", range.location, range.length);
}
另外,也可以忽略大小寫的查找子字符串
NSRange range = [str rangeOfString:subStr options:NSCaseInsensitiveSearch];
截取字符串
NSString * subStr = [str substringToIndex:6];
// 從str中提取從頭至下標爲6的字符串(不包括6),生成新字符串,返回字符串地址。
NSString * subStr = [str substringFromIndex:6];
// 從str中提取從下標爲6的字符串(包括6)到最後一個字符,生成新字符串,返回字符串地址。
NSRange range = {3, 4};
// 第一個表示location,第二個表示length。從下標爲3開始提取4個字符。
NSString * subStr = [str substringWithRange:range];
// 從str中提取從下標爲3開始提取4個字符,生成新字符串,返回字符串地址。
直接使用range,
[str substringWithRange:NSMakeRange(3, 4)]; 其中NSMakeRange的返回值就是一個NSRange。
NSMutableString可變字符串
可變字符串(子類)繼承於字符串(父類),所以字符串類的方法都可以使用。
可變字符串的初始化及增刪改方法
初始化
NSMutableString * str = [[NSMutableString alloc] init];
設置字符串[str setString:@"hello"]; // 可以隨時setString.
追加字符串
[str appendString:@" world"]; // 追加字符串。
追加格式符
[str appendFormat:@"%c", '!']; // 追加各種格式類型。
插入字符串
[str insertString:@"XXXX" atIndex:4]; // 插入XXXX到下標4後。
刪除字符串一部分
[str deleteCharactersInRange:NSMakeRange(3, 5)]; // 刪除字符串中從下標3開始的後面的5個字符。
修改字符串一部分
[str replaceCharactersInRange:NSMakeRange(3, 2) withString:@"TTTTTTTTTT"];
// 將字符串中下標從3開始的2個字符替換爲TTTTTTTTTT。