黑马程序员-OC-Foundation-NSString

来源:互联网 发布:lol域名 编辑:程序博客网 时间:2024/05/22 06:19

——- ios培训、ios培训、期待与您交流! ———-
NSString是什么
NSString是Foundation框架里面的NSObject的一个子类.
这里学习的主要是Foundation中的一些函数和这个类中已经封装好的一些方法,重点罗列了几个比较常用的方法和函数.

NSString用法
1.直接创建方式:

NSString *str = @"abc";
  1. 格式化创建:
NSString *st2 = [NSString stringWithFormat:@"%@", @"jack"];//这种方式创建的字符串存储在堆区NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", 10];//这种方式创建的字符串存储在常量区

3.文本编码:
中文 :GBK(3个字节) GB2312(3个字节)
UTF - 8:国际通用编码(2个字节)

  1. 字符串写入文件:
//这里使用的就是UTF-8文本编码[str writeToFile:@"/Users/zhaoxiaohu/Desktop/" atomically:YES  encoding:NSUTF8StringEncoding error:&err];

5.字符串从文件读取:

NSString *str = [NSString stringWithContentsOfFile:@"/Users/mac/Desktop/str.txt" encoding:NSUTF8StringEncoding error:&err];

6.字符串比较函数:

NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];返回值:NSOrderedAscending(str1<str2)NSOrderedDescending(str1>str2)NSOrderedSame(str1 = str2)
  1. 判读字符串是否相等:
[str1 isEqualToString:str3]//只比较内容是否一样
  1. 检测字符串前后缀:
NSURL *url=[NSURL URLWithString:@"http://www.itcase.com"];[url hasPrefix:@"http://"]; 字符串是否以http://开头[imgName hasSuffix:@"com"]; 检测字符串是否以.com结尾

9.从一个字符串中找到另一个字符串的位置:

NSRange range = [str1 rangeofString:str2]; //str1 中找str2

range是一个结构体,上面方法返回的是str1在str2中的位置和所占长度.
10.字符串的截取

NSString *str = @"http://www.baidu.com";    //1) 从xx位置开始,到最后结束(包含xx这个位置的字符)    NSString *str1 = [str substringFromIndex:5];    NSLog(@"str1 = %@",str1);    //2) 从开始位置,到xx位置结束(不包含xx这个位置)    NSString *str2 = [str substringToIndex:5];    NSLog(@"str2 = %@",str2);    //3) 截取一个范围 range    NSRange r1 = {3,4};    NSString *str3 = [str substringWithRange:r1];    NSLog(@"str3 = %@",str3);

11.字符串的替换

NSString *str =@"asdfsdafasdfdasdfsa";NSString *newStr = [str stringByReplacingOccurrencesOfString:@"a" withString:@"*"];

以上是把str字符串中”a”换成”*”
12.OC的字符串和 C的字符串互相转换问题

1) C---->OC对象    char *s = "zhangsanfeng";    printf("%s\n",s);    //思路:创建一个OC的字符串对象,用C语言的字符串创建    NSString *str = [NSString stringWithUTF8String:s];    NSLog(@"str = %@",str);    //2) OC对象 --> C的字符串    NSString *str2 = @"zbz";    // 把str2 转 C的字符串    const char *s1 = [str2 UTF8String];

关于NSString的一些思考

1.NSString直接创建的字符串都是不可变的,上面方法中有替换方法,本质上是在常量去重新创建一个新的字符串,然后把新的字符串的地址重新赋给原来字符串的指针.
2.NSString类中包含很多方法,有的是类方法,有的是对象方法,当方法,类方法由类调用,对象方法由对象调用.
3.NSString创建的字符串是一个对象,是char* 类型.

NSMutableString
NSMutableString是NSString的一个子类,可以创建可变的字符串.
它可以使用NSString中所有的方法.
可变的字符串的意思就是:这个字符串所在的空间可以不固定,可以往这块空间里面增加或者减少元素.

NSMutableString几个特有的方法
1.创建一个可变的空字符

 NSMutableString *str3 = [NSMutableString string];
  1. appendFormat 格式化的添加字符串
[str appendFormat:@"http://www.baidu.com/%d",100];
  1. 删除字符串一部分内容
[str deleteCharactersInRange:NSMakeRange(3, 4)];

4.插入一个字符串

[str insertString:@"p://" atIndex:3];

5.替换字符串的一部分内容

[str replaceCharactersInRange:NSMakeRange(11, 5) withString:@"itcast"];

关于NSMutableString的几点思考
1.NSMutableString创建的是可变的字符串,这个字符串的空间可变
2.NSMutableString str=@”abc”;这种创建方式是错误的,这种创建方式默认的是创建了一个不可变的字符串,显然不符合逻辑.
3.NSMutableString对字符串操作时空间大小可以改变,而空间的位置没有变,NSString在对字符串操作的时候,本质上是一个不断创建新字符串的过程,只不过是用指针不断指向不同的空间而已.

0 0