NSString简介
NSString是一个对象类型。NSString是NSObject(Cocoa Foundation的基础对象)的子类,所以具有NSObject的所有特性,NSString对象由unichar字符组成。unichar字符是符合Unicode标准的多字节字符。而且不别担心字符串的内部表示,因为NSString类已经自动处理了。
NS是Cocoa类对象类型的前缀,来源于史蒂夫-乔布斯被苹果开除那段时间建立的公司NeXT.@是Cocoa元素的前缀,很多地方我们会看到,比如接下来…
一、NSString
1 创建NSString对象
①、此方法不需要手动释放内存。
- NSString*aString =@"This is String"; //需要在头部放一个@符号
②、此方法需要手动释放内存
- NSString*aString =[[NSString alloc] initWithFormat:@"This is String"];
2 使用NSString对象
- NSString *aString = @"Programming is fun";
- NSLog(@"%@", aString);
3 释放NSString
- [aString release];
3 快速使用一个NSString
- NSLog([NSString stringWithFormat:@"一个NS字符串"]);
这种快速方法返回的是一个return为1,autorelease的对象,不需要操心它的内存管理
4 NSString常用方法
- NSString * str1 = @"This is string A";
- NSString * str2 = @"This is string B";
- NSString * res;
- NSComparisonResult compareResult;
- //计算字符串中的字符
- NSLog(@"Length of str1: %lu", [str1 length]);
- //将一个字符串复制到另一个字符串
- res = [NSString stringWithString: str1];
- NSLog(@"Copy: %@", res);
- //将一个字符串复制到另一个字符串的末尾
- str2 = [str1 stringByAppendingString: str2];
- NSLog(@"Concatentation: %@", str2);
- //验证两个字符串是否相等
- if ([str1 isEqualToString: res] == YES) {
- NSLog(@"str1 == res");
- }else{
- NSLog(@"str2 @= res");
- }
- //验证一个字符串是否小于、等于或者大于另一个字符串
- compareResult = [str1 compare: str2];
- if (compareResult < NSOrderedAscending) {
- NSLog(@"str1 < str2");
- }else if (compareResult == NSOrderedSame){
- NSLog(@"str1 = str2");
- }else{
- NSLog(@"str1 > str2");
- }
- //将字符串转换为大写
- res = [str1 uppercaseString];
- NSLog(@"UppercaseString conversion: %s", [res UTF8String]);
- //将字符串转换为小写
- res = [str1 lowercaseString];
- NSLog(@"LowercaseString conversion: %s", res);
- NSLog(@"Original string: %@", str1);
- //(1)截取字符串”20 | http://www.baidu.com”中,”|”字符前面和后面的数据,分别输出
- NSString * str1 = @"20|http://www.baidu.com";
- NSArray * str2 = [str1 componentsSeparatedByString:@"|"]; //使用 | 分割字符串为数组
- for (str1 in str2) { //遍历输出
- NSLog(@"obj = %@", str1);
- }
- //(2)从字符串@“aBcD_EfGk”中取出EfGk,并让大写字母转成小写,输出efgk
- NSString * str3 = @"aBcD_EfGk";
- NSRange range = {5, 4}; //定义rang,开始位置为5,获取4个
- NSString * str4 = [str3 substringWithRange:range]; //获取EfGk
- NSLog(@"%@", [str4 lowercaseString]); //输出,并使用 lowercaseString 转换成小写
- //(3)给定一个字符串,判断字符串中是否含有“png”,如果有就删除。
- NSString * str5 = @"skejf_png_ksd_ppng——————png";
- NSString * str6 = [str5 stringByReplacingOccurrencesOfString:@"png" withString:@""]; //替换png
- NSLog(@"%@", str6); //打印
- //(4)如何将敏感字变成**
- NSString * str7 = @"The name iTunes use222s when it sorts by artist na111me";
- NSString * str8 = @"*"; //定义替换的内容
- NSString * str9 = @"12"; //定义被替换的内容
- NSCharacterSet *CharacterSet = [NSCharacterSet characterSetWithCharactersInString:str9]; //替换
- // 数组转字符串
- NSLog(@"%@", [[str7 componentsSeparatedByCharactersInSet:CharacterSet] componentsJoinedByString:str8]);
5 NSMutableString常用方法
- //capacity 容量,指定存储空间效率高。如果字符串长度大于10,则会自动增加存储空间。
- NSMutableString * str1 = [[NSMutableString alloc] initWithCapacity:10];
- //setString 设置字符串
- [str1 setString:@"apple 1234"];
- //appendString 拼接字符串
- [str1 appendString:@"567"];
- //appendFormat 拼接格式字符串
- [str1 appendFormat:@" age = %i", 888];
- //replaceCharactersInRange:range withString:id //根据范围替换字符串
- //找到范围
- NSRange range = [str1 rangeOfString:@"ple"];
- //开始替换
- [str1 replaceCharactersInRange:range withString:@"*"];
- //insertString:< #(NSString *)#> atIndex:< #(NSUInteger)#>
- //在指定索引后面插入字符串
- [str1 insertString:@"HHH" atIndex:3];
- //deleteCharactersInRange:< #(NSRange)#>
- //删除指定范围字符串
- [str1 deleteCharactersInRange:range];
- NSLog(@"%@", str1);
- [str1 release];
二、Description方法:
NSLog(@”%@”, [对象 description]),利用这种方法是可以打印对象的,但是默认是显示的类名和对象在内存中的地址。而我们需要更详细的内容,那么可以重新定义Description方法。
- //方法实现
- - (NSString *) description {
- return [NSString stringWithFormat: @"name = %@, age = %i, height = %i, width = %i", _name, _age, _height, _width];
- }
- //打印(u 是创建的对象)
- NSLog(@"%@", [u description]);