Foundation框架提供了很多基础类,这些类是我们构建应用程序的基石,字符串类NSString就是其中之一。NSString代表不变字符串,也就是说如果试图通过NSString的方法修改字符串,那么会返回字符串对象的副本。
NSString时不可变字符串,也就意味着对字符串做任何操作都不会改变原来的字符串,而是产生一个新的字符串对象。
首先看一个使用NSString实现跑马灯效果的代码:
NSString *str = @"从前有座山,山上有座庙,庙里有个老和尚和一个小和尚,老和尚在给小和尚讲故事: ";
while (1) {
str = [[str substringFromIndex:1] stringByAppendingString:[str substringToIndex:1]];
printf("\n\n\n%s\n",[str UTF8String]);
usleep(250000);
}
以上代码使用了字符串的三个对象方法substringFromIndex: 、substringToIndex: 、 stringByAppendingString: 。前两个方法表示截取str字符串的子字符串。第三个方法是将两个截取的子字符串拼接,然后打印拼接得到的新的字符串对象。然后循环操作便可以看到跑马灯的效果。
NSString *str1 = @"hello";
char *str2 = "hello";
- 返回字符串长度:length
- 返回指定位置的单个字符:characterAtIndex:
- 比较两个字符串是否相同:isEqualToString:
- 正向查找子串的位置和范围:rangeOfString: 位置是子串第一个字符的位置,长度是字串的长度
- 逆向查找子串的位置和范围:rangeOfString: options:NSBackwardSearch
- 从字符串中提取子串: substringFromIndex:index 从指定位置索引开始提取子字符串(包含index) substringToIndex:index 从索引0开始取到index索引的子字符串(不包含index) substringWithRange: NSMakeRange( loc , len) 提取从索引loc开始长度为len的子字符串
- 将NSString转换成C字符串:cStringUsingEncoding:UTF8String UTF8String支持多国语言编码
- 在字符串后追加字符串(拼接字符串): stringByAppendingString:
- 在字符串后格式化追加字符串:[stringByAppendingFormat:@"a = %d",a];
- 字符串替换:stringByReplacingOccurrentOfString: withString:
- 将整型数据转换为字符串型数据 int a = 6; [@(a) stringValue]; @(c)表示将int类型的a封装成NSNumber类型的数据 [@"" stringByAppendingFormat:@"%d",a];
- 读取本地文件中的字符串: [ str1 stringWithContentsOfFile:@"/User/WF/Desktop/abc.txt" encoding:NSUTF8StringEncoding error:nil ];
- 读取URL(统一资源定位符,唯一标识网络资源)网络资源中的字符串 [ str1 stringWithContentsOfURL:[ NSURL URLWithString:@"/User/WF/Desktop/abc.txt" ] encoding:NSUTF8StringEncoding error:nil ];