Foundation 之 NSString和NSMutableString
2015-10-16 11:39
435 查看
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。
相关文章推荐
- Objective-C的内省(Introspection)用法小结
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
- NSString与C字符串之间的相互转换
- Objective-C中NSNumber与NSDictionary的用法简介
- Objective-C中NSLog输出格式大全
- Swift调用Objective-C编写的API实例
- Swift、Objective-C、Cocoa混合编程设置指南
- Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍
- Swift调用Objective-C代码
- 以实例讲解Objective-C中的KVO与KVC机制
- objective-c中生成随机数的方法
- 在Swift中使用Objective-C编写类、继承Objective-C类
- Swift能代替Objective-C吗?
- Objective-C 消息传递机制详解
- 在一个项目中同时使用Swift和Objective-C代码混合编程的方法
- vm安装mac os x 10.7 lion
- objective-c(一)
- objective-c(二)
- objective-c(三)