Foundation - NSString
/*
*字符串写入文件:
*/
void stringExport()
{
NSString *str = @"ha";
NSString *path = @"/Users/apple/Desktop/mj.txt";
NSError *error = nil;
// 如果文件夹不存在,会写入失败
// 如果文件夹存在,文件不存在,会自动创建文件
// 每次写入都会覆盖以前的内容
// atomically :YES: 原子性操作,全部内容写入成功才会产生新的内容。如果中途写入失败,就回滚操作。
// NO : 非原子性,写多少算多少
[str writeToFile:path
atomically:NO
encoding:NSUTF8StringEncoding
error:&error];
if (error) { // 有错误信息
NSLog(@"写入失败:\n%@", [error localizedDescription]);
} else { // 没有错误信息
NSLog(@"写入成功");
}
}
/*
*字符串的比较处理
*/
NSString *name = @"Jake";
NSString *name2 = @"Jack";
// 比较内容是否相同,不比较内存地址
//BOOL e = [name isEqualToString:name2];
NSComparisonResult result = [name compare:name2];
if (result == NSOrderedSame)
{
NSLog(@"name和name2内容一样");
} else if (result == NSOrderedAscending)
// 右边的字符串比左边大
{
NSLog(@"name2>name");
} else { // NSOrderedDescending
NSLog(@"name>name2");
}
/*
*大小写处理
*/
NSString *str = @"abcTAd";
NSLog(@"str=%@", str);
NSLog(@"大写=%@", [str uppercaseString]);
NSLog(@"小写=%@", [str lowercaseString]);
// NSString对象是不可变的
NSString *str = @"qq=1234";
str = @"123213"; //这里不能赋值。
/*
*字符串截取
*/
void stringSub()
{
NSString *str = @"http://im.qq.com?QQ=93232&pwd=45545456";
// 先计算QQ=的范围
NSRange qqRange = [str rangeOfString:@"QQ="];
// QQ号码的开始位置
NSUInteger location = qqRange.location + qqRange.length;
// QQ号码的长度 == &的位置 - QQ号码的开始位置
NSUInteger length = [str rangeOfString:@"&"].location - location;
NSString *qq = [str substringWithRange:NSMakeRange(location, length)];
NSLog(@"截出QQ=%@", qq);
NSRange pwdRange = [str rangeOfString:@"pwd="];
// 密码的开始位置
NSUInteger pwdLocation = pwdRange.location + pwdRange.length;
// 密码的长度 == 总长度 - 密码的开始位置
NSUInteger pwdLength = str.length - pwdLocation;
//NSString *pwd = [str substringWithRange:NSMakeRange(pwdLocation, pwdLength)];
// 从某个位置开始,一直截取到字符串结尾
NSString *pwd = [str substringFromIndex:pwdLocation];
// 从字符串的首位置开始,一直截取到某个位置
// [str substringToIndex:10];
NSLog(@"截出密码=%@", pwd);
}
/*
*字符串搜索
*/
void stringSearch()
{
/*
QQ: 123456
密码: 123456
*/
NSString *str = @"http://im.qq.com?QQ=123456&pwd=123456";
// 搜索QQ=在str中的范围
NSRange range = [str rangeOfString:@"QQ="];
//NSLog(@"%@", NSStringFromRange(range));
// 如果找不到对应的字符串,length返回0,location=NSNotFound
NSRange range2 = [str rangeOfString:@"https://"];
/*
if (range2.length == 0)
{
NSLog(@"https://找不到");
}
*/
//NSLog(@"%@",NSStringFromRange(range2));
// 判断是否以ttp开头,如果是,就返回YES(1),否则,返回NO(0)
BOOL hasP = [str hasPrefix:@"ttp"];
NSLog(@"%d", hasP);
// 判断是否以.txt结尾
BOOL hasS = [@"abc.txt" hasSuffix:@".txt"];
}
/*
*字符串创建
*/
void stringCreate()
{
// 1.最快的字符串创建方式
NSString *str = @"itcast"; // 自动释放
// 2.
NSString *str2 = [[NSString alloc] initWithString:@"123123"];
[str2 release];
// 等价于str22 = @"12312323"; 自动释放
NSString *str22 = [NSString stringWithString:@"12321312"];
// 3.
NSString *str3 = [[NSString alloc] initWithFormat:@"age is %d", 10];
NSLog(@"str3=%@", str3);
[str3 release];
// 自动释放
NSString *str4 = [NSString stringWithFormat:@"age is %d", 20];
// 4.C语言字符串 <--> OC字符串
// C字符串 --> OC字符串
NSString *s4 = [[NSString alloc] initWithUTF8String:"jack"];
// OC字符串 --> C字符串
const char *cs = [s4 UTF8String];
// 5.从文件中读取
NSString *path = @"/Users/apple/Desktop/abc.txt";
NSError *error = nil; // 一定要先清空
NSString *str6 = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
// 文件读取成功,error就为nil
// 文件读取失败,error就不为nil,error包含了详细的错误信息
if (error) // 说明有错误
{
// 返回主要错误信息
NSLog(@"文件读取失败:\n%@", [error localizedDescription]);
//NSLog(@"文件读取失败:\n%@", error);
} else { // 说明没有错误
NSLog(@"文件读取成功:\n%@", str6);
}
[str6 release];
// http://www.baidu.com
// URL的格式: 协议头://全路径
// 网络资源的协议头:http
// 本地文件的协议头:file
// ftp服务器资源的协议提:ftp
// URL : 代表着一种资源,每一个资源都有自己唯一的URL地址
//NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
//NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/aaa.txt"];
// 这里不用增加file://协议头
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/aaa.txt"];
NSString *str7 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSLog(@"str7=\n%@", str7);
[str7 release];
//[NSString stringWithContentsOfURL:<#(NSURL *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError **)#>];
}