/*
1、将字符串内容写入到磁盘上的某1个文件之中.
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;
参数1:将字符串泥工写入到哪1个文件之中,写上文件的路径.
参数2:YES,先将内容写入到1个临时文件,如果成功再将这个文件搬到指定的目录,安全,效率较低
NO,直接将内容写到指定的文件,不安全,效率高.
推荐使用NO
参数3:指定写入的时候使用的编码,一般情况下这里写NSUTF8StringEncoding,使用UTF-8编码.
参数4:二级指针,要传递1个NSError指针的地址.
如果写入成功,这个指针的值就是nil.
如果写入失败,这个指针就会指向1个错误对象,这个对象描述了发生错误的信息.
这个对象的localizedDescription方法可以得到发生错误的简要信息.
所以我们要判断是否写入成功,也可以判断这个指针的值是否为nil.
如果不想知道发生错误的原因,第四个参数给一个nil就可以了.
返回值是BOOL类型的,代表是否写入成功.
2、从磁盘上的文件中读取文件中的内容.
+ (nullable instancetype)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error;
第1个参数:文件的路径
第2个参数:使用的编码:NSUTF8StringEncoding
第3个参数:错误对象
3、使用NSURL来读取字符串数据
1)读写字符串数据的时候,路径可以是本地磁盘路径,也可以是1个网址,还可以是1个ftp文件的地址。
我们用1个NSURL对象来描述1个地址,本地路径的网址的 ftp文件的
我们就可以通过这个NSURL对象存储的地址信息来读写字符串.
2)不同的URL的写法
a)本地磁盘文件:file://绝对路径
b)网址:http://网址或者 https://网址
c)ftp: ftp://文件地址
3)将不同类型的地址封装在NSURL对象之中.
NSURL *url1 = [NSURL URLWithString:@"http://www.itsoku.com"];
NSURL *url2 = [NSURL URLWithString:@"ftp://server.itsoku.com/a.txt"];
NSURL *url3 = [NSURL URLWithString:@"file:///Users/likun/abc.txt"];
4)字符串就提供了对应的方法去读写NSURL对象中封装的资源路径
从指定资源路径读取文本内容
+ (nullable instancetype)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error;
将字符串内容写入到资源路径中
- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;
如果要想忘了或者ftp写内容需要有权限.
4、字符串比较
- (NSComparisonResult)compare:(NSString *)string;
5、字符串比较:忽略大小写的比较
- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;
6、判断字符串内容是否相等
- (BOOL)isEqualToString:(NSString *)aString;
7、字符串判断是否以指定的字符串开头
- (BOOL)hasPrefix:(NSString *)str;
8、判断字符串是否以指定的字符串结尾
- (BOOL)hasSuffix:(NSString *)str;
9、在字符串中搜索子串,从前往后搜
- (NSRange)rangeOfString:(NSString *)searchString;
返回值是1个NSRange类型的结构体变量.
typedef struct _NSRange {
NSUInteger location; //代表子串在主串出现的下标
NSUInteger length;//代表子串在主串中匹配的长度
} NSRange;
如果没找到:location的值为unsigned long的最大值,也就是NSIntegerMax,length为0也表示没有找到
10、在主串中搜索子串,从后往前
NSRange range = [str rangeOfString:@"love" options:NSBackwardsSearch];
if(range.length==0){
NSLog(@"没找到");
}else{
NSLog(@"%lu,%lu",range.location,range.length);
}
11、NSRange结构体.
1)是Foundation框架中定义的1个结构体.
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
NSRange range;
这个机构提变量一般情况下用来表示1段范围,特别用在子串在主串中的范围表示.
@"hahajackhehe" @"jack" 4 4
NSRange range = {4,4};
2)声明并初始化结构体变量的方式
1)最原始的方式.
NSRange range;
range.location = 3;
range.length = 4;
2)第二种方式:NSRange range = {3, 7};
3)第三种方式:NSRange range = {.location:3,.length = 7};
4)Foundation框架中定义了1个函数,这个函数可以快速创建一个NSRange结构体.
NSRange NSMakeRange(NSUInteger loc, NSUInteger len);
返回1个指定属性的NSRange结构体变量.
5)Foundation框架中定义了1个函数,可以将1个NSRange结构体变量转换为NSString
12、截取字符串
- (NSString *)substringFromIndex:(NSUInteger)from;//从指定位置截取到最后
- (NSString *)substringToIndex:(NSUInteger)to;//从第0个约束截取到指定的下标处
- (NSString *)substringWithRange:(NSRange)range;//从字符串中截取1个范围的字符串
13、字符串的替换
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement NS_AVAILABLE(10_5, 2_0);
将字符串中第1个参数替换为第2个参数,友情提示:原来的指针指向的字符串的内容是不会变的,会全部替换.
新串是以方法的返回值返回的.
14、获取字符串中每1个下标的字符.
- (unichar)characterAtIndex:(NSUInteger)index;
传入1个NSUInteger的参数,救护返回这个下标处的字符,返回值是unichar类型的,这个类型的字符串支持中文,输出unichar变量中的字符串使用格式控制符%C看清楚是大写的C
15、字符串数据转换为其他类型,使用频率很高.
@property (readonly) double doubleValue;
@property (readonly) float floatValue;
@property (readonly) int intValue;
@property (readonly) NSInteger integerValue NS_AVAILABLE(10_5, 2_0);
@property (readonly) long long longLongValue NS_AVAILABLE(10_5, 2_0);
@property (readonly) BOOL boolValue NS_AVAILABLE(10_5, 2_0);
转换注意:从头开始转换,能转换多少就是多少,遇到不能转换的时候就停止转换.
16、字符串的其他成员
1)得到字符串的长度,调用字符串对象的leng方法就可以.
@property(readonly) NSUInteger length;
2)去掉字符串的前后空格
str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
17、字符串和文件相关方法
1)判断当前字符串是否是绝对路径
@property (getter=isAbsolutePath, readonly) BOOL absolutePath
2)获取文件路径中的最后一个目录,本质就是获取路径中最后一个/后面的内容
@property (readonly, copy) NSString *lastPathComponent;
3)删除文件路径中最后一个目录
@property (readonly, copy) NSString *stringByDeletingLastPathComponent;
4)给文件路径中添加一个目录
- (NSString *)stringByAppendingPathComponent:(NSString *)str;
本质就是在字符串末尾加上一个/和指定的内容
注意:如果路径后面一句有了/,那么就不会添加了.
如果路径后面有多个/,那么会自动删除多余的/,只会保留一个
5)获取文件的扩展名
@property (readonly, copy) NSString *pathExtension;
6)删除文件路径的扩展名
@property (readonly, copy) NSString *stringByDeletingPathExtension;
7)为文件路劲添加扩展名
- (nullable NSString *)stringByAppendingPathExtension:(NSString *)str;
*/
#import
#define BOOLDes(val) val==YES?@"是":@"否"
/**
* 写入本地文件
*/
void test1();
/**
* 读取本地文件
*/
void test2();
/**
* 通过NSURL读取本地文件
*/
void test3();
/**
* 通过NSURL读取网页内容
*/
void test4();
/**
* 字符串的比较
*/
void test5();
/**
* 字符串比较:忽略大小写的比较
*/
void test6();
/**
* 判断字符串是否以某个字符串开头,或者是否以某个字符串结尾
*/
void test7();
/**
* 在字符串中搜索子串
*/
void test8();
/**
* 字符串的截取
*/
void test9();
/**
* 字符串的替换
*/
void test10();
/**
* 获取字符串中指定下标的字符
*/
void test11();
/**
* 字符串数据转换为其他类型
*/
void test12();
/**
* 去掉字符串的前后空格
*/
void test13();
/**
* 和文件相关方法
*/
void test14();
int main(int argc,constchar * argv[]) {
test14();
return0;
}
/**
* 和文件相关方法
*/
void test14()
{
/**
* 判断当前文件路径是否是绝对路径
*/
NSString *str1 =@"/user";
if(str1.isAbsolutePath){
NSLog(@"%@是绝对路径",str1);
}else{
NSLog(@"%@不是绝对路径",str1);
}
/**
* 获取文件路劲中最后一个目录
*/
NSString *str2 =@"/user/aaa";
NSLog(@"%@最后一个目录是%@",str2,str2.lastPathComponent);
/**
* 删除文件路径中最后一个目录
*/
NSString *str3 =@"/user/aaa";
NSLog(@"%@",str3.stringByDeletingLastPathComponent);
/**
* 给文件路径中添加一个目录
*/
NSString *str4 =@"/user/aaa";
NSLog(@"%@",[str4stringByAppendingPathComponent:@"itsoku"]);
/**
* 获取文件的扩展名
*/
NSString *str5 =@"/user/aaa.txt";
NSLog(@"%@的扩展名%@",str5,str4.pathExtension);
/**
* 删除文件的扩展名
*/
NSString *str6 =@"/user/aaa.txt";
NSLog(@"%@删除扩展名之后内容为%@",str6,str6.stringByDeletingPathExtension);
/**
* 给文件路劲添加一个扩展名
*/
NSString *str7 =@"/user/aaa.txt";
NSLog(@"%@添加扩展名之后内容为%@",str7,[str7stringByAppendingPathExtension:@"doc"]);
}
/**
* 去掉字符串的前后空格
*/
void test13()
{
NSString *str =@" jack ";
NSLog(@"%@",str);
str = [str stringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceCharacterSet]];
NSLog(@"%@",str);
}
/**
* 字符串数据转换为其他类型
*/
void test12()
{
NSString *str =@"12";
int num = str.intValue;
NSLog(@"%d",num);
}
/**
* 获取字符串中指定下标的字符
*/
void test11()
{
NSString *str =@"jacklove肉丝";
unichar ch = [strcharacterAtIndex:8];
NSLog(@"%C",ch);
}
/**
* 字符串的替换
*/
void test10()
{
NSString *str =@"我爱北京,北京天安门";
str = [str stringByReplacingOccurrencesOfString:@"北京"withString:@"广州小蛮腰"];
NSLog(@"%@",str);
}
/**
* 字符串的截取
*/
void test9()
{
NSString *str =@"i love itsoku";
NSLog(@"%@",[strsubstringFromIndex:2]);
NSLog(@"%@",[strsubstringToIndex:3]);
NSLog(@"%@",[strsubstringWithRange:NSMakeRange(2,4)]);
}
/**
* 在字符串中搜索子串
*/
void test8()
{
NSString *str =@"i love itsoku love you!";
//从前往后搜
NSRange range = [strrangeOfString:@"love"];
if(range.length==0){
NSLog(@"没找到");
}else{
NSLog(@"%lu,%lu",range.location,range.length);
}
//从后往前搜
range = [str rangeOfString:@"love"options:NSBackwardsSearch];
if(range.length==0){
NSLog(@"没找到");
}else{
NSLog(@"%lu,%lu",range.location,range.length);
NSLog(@"%@",NSStringFromRange(range));
}
}
/**
* 判断字符串是否以某个字符串开头,或者是否以某个字符串结尾
*/
void test7()
{
NSString *str =@"http://www.itsoku.com";
BOOL res = [strhasPrefix:@"http"];
NSLog(@"%@",BOOLDes(res));
res = [str hasSuffix:@"1.com"];
NSLog(@"%@",BOOLDes(res));
}
/**
* 字符串比较:忽略大小写的比较
*/
void test6()
{
NSString *str1 =@"rose";
NSString *str2 =@"ROSE";
int res = [str1compare:str2options:NSCaseInsensitiveSearch];
NSLog(@"%d",res);
}
/**
* 字符串的比较
*/
void test5()
{
NSString *str1 =@"jack";
NSString *str2 =@"tom";
NSComparisonResult res = [str1compare:str2];
switch (res) {
caseNSOrderedAscending:
//说明str1比str2小
NSLog(@"小");
break;
caseNSOrderedSame:
//说明str1和str2相等
NSLog(@"相等");
break;
caseNSOrderedDescending:
//说明str1比str2大
NSLog(@"大");
break;
default:
break;
}
}
/**
* 通过NSURL读取网页内容
*/
void test4()
{
NSURL *u1 = [NSURLURLWithString:@"http://www.itsoku.com"];
NSError *error;
NSString *str = [NSStringstringWithContentsOfURL:u1encoding:NSUTF8StringEncodingerror:&error];
if(error){
NSLog(@"读取失败,错误信息:%@",[errorlocalizedDescription]);
}else{
NSLog(@"%@",str);
}
}
/**
* 通过NSURL读取本地文件
*/
void test3()
{
NSURL *u1 = [NSURLURLWithString:@"file:///Users/likun/abc.txt"];
NSError *error;
NSString *str = [NSStringstringWithContentsOfURL:u1encoding:NSUTF8StringEncodingerror:&error];
if(error){
NSLog(@"读取失败,错误信息:%@",[errorlocalizedDescription]);
}else{
NSLog(@"%@",str);
}
}
/**
* 读取文件内容
*/
void test2()
{
NSError *error;
NSString *str = [NSStringstringWithContentsOfFile:@"/Users/likun/Desktop/project/oc/9.2、Foundation框架-NSString常用方法/main.m"encoding:NSUTF8StringEncodingerror:&error];
if(error){
NSLog(@"读取失败.");
NSLog(@"%@",[errorlocalizedDescription]);
}else
{
NSLog(@"%@",str);
}
}
/**
* 写文件
*/
void test1()
{
NSString *str =@"http://www.itsoku.com,一个技术学习与分享平台";
NSError *error;
BOOL res = [strwriteToFile:@"/Users/likun/abc.txt"atomically:NOencoding:NSUTF8StringEncoding error:&error];
if(res ==YES)
{
NSLog(@"写入成功.");
}else{
NSLog(@"写入失败.");
NSLog(@"%@",error.localizedDescription);
}
}
如果喜欢,请关注公众号,我们将最好的内容分享与你!