------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一Foundation框架
1概念:框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合
大约有80个框架
2 Foundation框架的作用Foundation框架是基础
Foundation框架包含了很多开发中常用的数据类型:
结构体
枚举
类
3使用Foundation框架
使用Foundation框架中的功能引入
#import <Foundation/Foundation.h>
4修改了系统的文件,引起的错误
解决方案:删除Xcode的缓存,
缓存路径是 /Users/用户名/Library/Developer/Xcode/DerivedData
要看到上述文件夹, 在终端敲指令显示隐藏文件夹
1、NSString类
一个NSString对象就代表一个字符串
叫NSString为字符串类
2、NSString的创建方式
1) 最直接的方式(这是常量字符串)
NSString *str = @"abc";
NSString *st3 = @"abc";
3 格式化的方式(堆区)
NSString *st2 = [NSString stringWithFormat:@"%@", @"jack"];
NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", 10];
NSString *str1 = @"你好123";
NSString *str2 = [[NSString alloc] initWithFormat:@"你好%d", 123];
NSString *str3 = [NSString stringWithFormat:@"你好%d", 123];
// 比较下面的3个字符串与上面的3个字符串的地址
NSString *str11 = @"你好123";
NSString *str21 = [[NSString alloc] initWithFormat:@"你好%d", 123];
NSString *str31 = [NSString stringWithFormat:@"你好%d", 123];
结果为不同
下面的方式是直接把字符串的地址进行赋值, 所以地址一定都是一样的。
NSString *s1 = str1;
NSLog(@"%@----%@", s1, str1);
NSLog(@"%p---%p", s1, str1);
方式: 直接根据给定的路径来读写文件
文件写入: [str1 writeToFile:@"路径" atomically:YES
encoding:NSUTF8StringEncoding error:nil];
文件读取: [NSString stringWithContentsOfFile:@"路径"
encoding:NSUTF8StringEncoding error:nil];
根据NSURL对象来读取文件内容。
* [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:
&err];
6 NSString的常见方法:
- (NSString *)uppercaseString;
全部字符转为大写字母
- (NSString *)lowercaseString
全部字符转为小写字母
- (NSString *)capitalizedString首字母变大写,其他字母都变小写。
一个句子中有多个单词,那么会将每个单词的首字母 变成大写,其余字母变成小写
- (BOOL)isEqualToString:(NSString *)aString;
两个字符串的内容相同就返回YES, 否则返回NO
注意: == 比较的是两个对象的地址是否相同, 不是字符串内容
- (NSComparisonResult)compare:(NSString *)string;这个方法用来比较两个字符串内容的大小
比较方法: 逐个字符地进行比较ASCII值,返回NSComparisonResult作为比较结果
NSComparisonResult是一个枚举,有3个值:
如果左侧 > 右侧,返回NSOrderedDescending,如果左侧 < 右侧,返回NSOrderedAscending,
如果左侧 == 右侧返回NSOrderedSame
- (NSComparisonResult) caseInsensitiveCompare:(NSString *)string;
忽略大小写进行比较,返回值与compare:一致
- (BOOL)hasPrefix:(NSString *)aString;
是否以aString开头
- (BOOL)hasSuffix:(NSString *)aString;
是否以aString结尾
- (NSRange)rangeOfString:(NSString *)aString;
用来检查字符串内容中是否包含了aString
如果包含, 就返回aString的范围
如果不包含, NSRange的location为NSNotFound, length为0
反方向搜索:[str rangeOfString: @”str” options: NSBackwardsSearch]; // 从后向前 搜索
- (NSString *)substringFromIndex:(NSUInteger)from;
从指定位置from开始(包括指定位置的字符)到尾部
- (NSString *)substringToIndex:(NSUInteger)to;
从字符串的开头一直截取到指定的位置to,但不包括该位置的字符
- (NSString *)substringWithRange:(NSRange)range;
按照所给出的NSRange从字符串中截取子串
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;
用replacement替换target
- (NSUInteger)length;
返回字符串的长度(有多少个字符,无论中文字符、英文字符等等,一个字符就是一个字符)
- (unichar)characterAtIndex:(NSUInteger)index;
返回index位置对应的字符
字符串转为基本数据类型
- (double)doubleValue;
- (float)floatValue;
- (int)intValue;
- (char *)UTF8String; // 在操作SQLite数据库时才会用到
转为C语言中的字符串。
/** 参考代码:
C语言字符串:
char *name = “steve”;
NSString *s1 = @"123”; char *s2 = s1.UTF8String; printf("%s", s2);
*/
去除所有的空格
[str stringByReplacingOccurrencesOfString:@" " withString:@""]
去除首尾的空格
[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
* NSString *s1 = @"aa"; s1 = @"bb";
这种情况只是指针变量s1 重新指向了, 分配好的字符串空间中的内容并没有发生改变。
不适用NSString进行拼接