A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© u37kl 中级黑马   /  2016-2-19 18:32  /  956 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

#NSString类
1、创建方式:
1> NSString *str = @"abc"; // 定义在常量区
2> NSString *str1 = [NSString stringwithString:str]; // 定义在常量区,创建与str相同的字符串
3> NSString *str = [[NSString alloc] initWithString:@"abc"]; // 定义在常量区
4> NSString *str = [NSString alloc] initWithFormat:@"C字符串=%s, OC字符串 = %@", "abc", @"abc"]; // 堆区
5> NSString *str = [NSString stringWithFormat@"C字符串=%s, OC字符串 = %@", "abc", @"abc"]; // 堆区

2、字符串与基本类型的相互转换:
  1> NSString *str = [NSString alloc] initWithUTF8String:"abc"]; // 将C语言字符串转成OC字符串
  2> NSString *str = [NSString stringWithUTF8String:"abc"]; // 将C语言字符串转成OC字符串
  3> NSString *str = [NSString stringWithFormat:@"%d", a]; // 将C语言基本数据类型转成OC字符串
  4> const char *p = [str UTF8String]; // 将OC字符串转成C语言字符串
  5> int a = [str intValue]; // 将数字串转成int类型
  6> float a = [str floatValue]; // 将数字串转成float类型
  7> double a = [str doubleValue]; // 将数字串转成double类型


3、获取字符串长度:
1> NSUinteger a = str.length; 或者 NSUInteger a = [str setLength];

4、OC字符串比较:(地址比较合内容比较)
1> str1 == str2; // 使用" == ",比较的是两个字符串的地址是否相等,不是比较的内容。
2> [str1 compare:str2]; // 比较两个字符串内容,str1 > str2,则返回1,等于返回0,小于返回-1。区分大小写的比较。
3> NSComparisonResult a = [str1 compare:str2 options:0]; // 区分大小写的比较,NSComparisonResult是枚举类型,str1 > str2,为降序返回NSOrderedDescending=1,等于为顺序返回NSOrderedSame=0,小于为升序返回NSOrderedAscending=-1。
4> NSComparisonResult a = [str1 caseInsensitiveCompare:str2]; // 不区分大小写的比较,NSComparisonResult是枚举类型,str1 > str2,为降序返回NSOrderedDescending=1,等于为顺序返回NSOrderedSame=0,小于为升序返回NSOrderedAscending=-1。
5> [str1 isEqualTo:str2]; // 比较两个字符串是否相等,相等返回YES,不相等返回NO。(区分大小写)
6> [str1 isEqualToString:str2]; // 比较两个字符串是否相等,相等返回YES,不相等返回NO。(区分大小写)

5、修改OC字符串:
1> NSString *str = [str uppercaseString]; // 将OC字符串中的所有小写字符转成大写。
2> NSString *str = [str lowercaseString]; // 将OC字符串中的所有大写字符转成小写。
3> NSString *str = [str capitalizedString]; // 将OC字符串中出现的第一个字母转成大写。
4> NSString *str1 = [str stringByTrimmingCharctersInset:[NSCharacterSet WhitespaceCharacterSet]]; // 去除OC字符串中前后空格。
5> NSString *str1 = [str substringFromIndex:4]; // 从第4个位置截取到字符串结尾,包含第4个位置。
6> NSString *str1 = [str substringToIndex:4]; // 从字符串开头截取到字符串第4个位置,不包含第4个位置。
7> NSString *str1 = [str substringWithRange: NSMakeRange(1,3)] // 截取字符串的某个范围。
8> NSString *str1 = [str stringByReplacingOccurrencesOfString:(NSString *) 旧内容withString:(NSString *) 新内容]; //将字符串中的旧内容替换成新内容
9> NSString *str1 = [path stringByAppendingPathComponent:@"game"] // /Users/Desktop --> /Users/Desktop/game,生成新的路径。

6、查询OC字符串:
1> BOOL b = [str hasPrefix:@"AAA"]; // 判断字符串是否有AAA前缀。
2> BOOL b = [str hasSuffix:@"AAA"]; // 判断字符串是否有AAA后缀。
3> unichar c = [str characterAtIndex:2]; // 查询字符串第2个位置的元素是啥。
4> NSRange r = [str rangeOfString:@"ab"]; // 在str字符串中查询字串ab的范围,返回一个NSRange结构体,找不到时r.location = NSNotFound,找到返回相应的location和length。
    if (r.location != NSNotFound) { // NSNotFound == NSIntegerMax,最大值。
   
        NSLog(@"@",NSStringFromRange(r));
    }

5> NSRange r = [str rangeOfString:@"ab" options:0 range:NSMakeRange(1,5)];
   // 在某个范围查询子串的位置。其中option接收一个位枚举的值,当不想设置这个值并且还想用这个方法是,就设置为0,表示我不想设置该值。

7、NSString的文件存取:
1> BOOL b = [str writeToFile:@"/User/thinkpad/DeskTop/a.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
    // 将字符串保存到本地路径下,返回Yes表示写入成功;- (BOOL) writeToFile:文件路径 atomically:是否开启事务 encoding:设置字符编码 error:异常

2> BOOL b = [str writeToURL:[NSURL fileWithPath:@"/User/thinkpad/DeskTop/a.txt"] atomically:YES encoding:NSUTF8StringEncoding error:nil];
    // 将字符串保存到URL路径下;返回Yes表示写入成功;- (BOOL) writeToURL:URL路径 atomically:是否开启事务 encoding:设置字符编码 error:异常

3> NSString *str = [NSString stringWithContentsOfFile:@"/User/thinkpad/DeskTop/a.txt" encoding:NSUTF8StringEncoding error:nil];
   // 从本地路径下读取字符串,+ (instancetype) stringWithContentsOfFile:文件路径 encoding:设置字符编码 error:异常


4> NSString *str = [NSString stringWithContentsOfURL:[NSURL fileWithPath:@"/User/thinkpad/DeskTop/a.txt" encoding:NSUTF8StringEncoding error:nil];
   // 从URL路径下将字符串取出;+ (instancetype) stringWithContentsOfURL:URL路径 encoding:设置字符编码 error:异常

                    
                    
8、练习:<itcast>船只墨客</itcast>标签中的数据。
   NSString *str = @"<itcast>船只墨客</itcast>";
   NSString *str1 = [str stringByReplacingOccurrencesOfString:@"<itcast>" withString:@""];
   NSString *str2 = [str1 stringByReplacingOccurrencesOfString:@"</itcast>" withString:@""];
   NSLog(@"%@", str2);

                    
#NSMutableString:
1、介绍:NSMutableString是NSString的子类,并且NSString对象的内存空间的内容和大小都不可变,NSMutablestring对象的内存空间的内容和大小都可变。
2、创建方式:
1> NSMutableString *str = [NSMutableString string]; // 定义一个空串。
2> NSMutableString *str = [NSMutableString stringWithString:@"abc"];
2> NSMutableString *str = [NSMutableString stringWithFormat:@"a = %s", "abc"];
3> NSMutableString *str = [NSMutableString stringWithUTF8String:"abc"]; // 将C语言字符串转成OC可变字符串。
                    
3、修改操作:
1> [str appendString:@"cdef"]; // 在字符串后追加内容
2> [str appendFormat:@"c = %s", "abc"]; // 追加格式化字符串
3> [str deleteCharactersInRange:NSMakeRange(1,2)]; // 删除指定范围的字符串。
4> [str insertString:@"AAA", atIndex:2]; // 在指定位置中插入字符串。
5> [str replaceCharactersInrange:NSMakeRange(1,2) withString:@"AAA"];
    // 使用str字符串替换range范围内的字符串,range.length > str,则删除多余的位置,range.length < str,则增添缺失的位置。
6> str.string = @"abc"; // NSMutableString类中有string属性,可以使用该属性为该对象初始化。
                    
4、常见错误:
1> NSMutableString *str = @"abc"; [str appendString@"xxx"]; // 运行时才会检查str的真实类型,不要使用子类指针变量(NSMutableString)指向父类的对象(NSString)。
2> 只有不做截取、拼接、替换操作的字符串,就使用NSString类型,若是涉及到这些操作,才使用NSMutableString类型。

3 个回复

倒序浏览
果断收藏
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
还没学完,果断先收藏,太有用啦,谢谢楼主!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马