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。