//
// main.m
// NSString
//
// Created by mj on 13-4-5.
// Copyright (c) 2013年 itcast. All rights reserved.
// #import <Foundation/Foundation.h> #pragma mark NSString的创建
void stringCreate() {
// char *s = "A String!"; // C语言中的字符串 // 这种方式创建出来的字符串是不需要释放的
NSString *str1 = @"A String!"; NSString *str2 = [[NSString alloc] init];
str2 = @"A String!";
[str2 release]; NSString *str3 = [[NSString alloc] initWithString:@"A String!"];
[str3 release];
// 不需要管理内存
str3 = [NSString stringWithString:@"A String!"]; NSString *str4 = [[NSString alloc] initWithUTF8String:"A String!"];
[str4 release];
str4 = [NSString stringWithUTF8String:"A String!"]; NSString *str5 = [[NSString alloc] initWithFormat:@"My age is %i and height is %.2f", , 1.55f]; // 这句代码放在中间会造成2个错误:
// 1.前面创建的字符串没有被释放
// 2.后面创建的字符串会释放过度,造成野指针错误
// str5 = [NSString stringWithFormat:@"My age is %i and height is %.2f", 19, 1.55f]; NSLog(@"str5:%@", str5);
[str5 release]; str5 = [NSString stringWithFormat:@"My age is %i and height is %.2f", , 1.55f];
} void test(NSString **str) {
*str = @"";
// s = @"123";
} void stringCreate2() {
// 从文件中读取文本
NSString *path = @"/Users/apple/Desktop/test.txt";
// 这个方法已经过期,不能解析中文
// NSString *str1 = [NSString stringWithContentsOfFile:path]; // 定义一个NSError变量
NSError *error;
// 指定字符串编码为UTF-8: NSUTF8StringEncoding
NSString *str1 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
if (error == nil) { // 没有错误信息
NSLog(@"读取文件成功:%@", str1);
} else {
NSLog(@"读取文件失败:%@", error);
} NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/test.txt"];
NSString *str2 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@", str2); NSURL *url2 = [NSURL URLWithString:@"http://www.baidu.com"];
NSString *str3 = [NSString stringWithContentsOfURL:url2 encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@", str3);
} #pragma mark 字符串的导出
void stringExport() {
NSString *str = @"123456我是字符串!!!!";
// 如果文件不存在,会自动创建文件
// 如果文件夹不存在,会直接报错
NSString *path = @"/Users/apple/Desktop/abc.txt"; NSError *error;
// 编码指定错误也会报错
// YES代表要进行原子性操作,也就是会创建一个中间的临时文件
[str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
if (error) {
// [error localizedDescription]会返回主要的错误信息
NSLog(@"写入失败:%@", [error localizedDescription]);
} else {
NSLog(@"写入成功");
}
} //void test2(int *p) {
// *p = 9;// a = 9;
//} int main(int argc, const char * argv[])
{ @autoreleasepool {
// int a = 10;
// test2(&a);
// NSLog(@"%i", a); stringExport(); // NSString *s = @"456";
//
// test(&s);
//
// NSLog(@"%@", s);
}
return ;
}

NSstring的其它用法

#pragma mark 字符串的大小写处理
void caseTest() {
NSString *str = @"GuangDong";
// 转成大写
NSLog(@"大写:%@", [str uppercaseString]);
// 转成小写
NSLog(@"小写:%@", [str lowercaseString]);
// 首字母变大写,其他字母变小写
NSLog(@"首字母变大写:%@", [@"aGE" capitalizedString]);
} #pragma mark 字符串的比较
void compare() {
// 检测字符串的内容是否相同
BOOL result = [@"abc" isEqualToString:@"abc"];
NSLog(@"%i", result); // NSOrderedAscending 右边的字符串比左边大
// NSOrderedSame 两个字符串的内容相同
// NSOrderedDescending 左边的字符串比右边的大
NSComparisonResult result2 = [@"abc" compare:@"Abc"];
if (result2 == NSOrderedSame) {
NSLog(@"两个字符串的内容相同");
} else if (result2 == NSOrderedAscending) {
NSLog(@"右边 > 左边");
} else if (result2 == NSOrderedDescending) {
NSLog(@"右边 < 左边");
}
} #pragma mark 字符串的搜索
void search() {
NSString *str = @"123456456.txt"; NSLog(@"是否以22开头:%i", [str hasPrefix:@""]);
NSLog(@"是否以txt结尾:%i", [str hasSuffix:@"txt"]); // 搜索字符串
NSRange range = [str rangeOfString:@""];
// range.length == 0
if (range.location == NSNotFound) {
NSLog(@"不能找到");
} else {
NSLog(@"找到的范围是:%@", NSStringFromRange(range));
} // 从尾部开始搜索字符串
range = [str rangeOfString:@"" options:NSBackwardsSearch];
NSLog(@"%@", NSStringFromRange(range)); // 指定范围进行搜索
// [str rangeOfString:@"456" options:NSBackwardsSearch range:<#(NSRange)#>];
} #pragma mark 字符串的截取
void subString() {
NSString *str = @""; // 从索引3开始截取到尾部(包括3)
NSLog(@"%@", [str substringFromIndex:]); // 从头部开始截取到索引3之前(不包括3)
NSLog(@"%@", [str substringToIndex:]); // 指定范围进行截取
NSRange range = NSMakeRange(, );
NSLog(@"%@", [str substringWithRange:range]); NSString *str2 = @"a-b-c-d-5";
NSArray *array = [str2 componentsSeparatedByString:@"-"];
NSLog(@"%@", array); NSString *str3 = [array objectAtIndex:];
NSLog(@"%@", str3);
} #pragma mark 与路径相关
void pathTest() {
// 快速创建一个自动释放的数组
NSMutableArray *components = [NSMutableArray array];
[components addObject:@"Users"];
[components addObject:@"MJ"];
[components addObject:@"Desktop"];
// 将数组中的所有字符串拼接成一个路径
NSString *path = [NSString pathWithComponents:components];
NSLog(@"%@", path); // 将路径分解成一个数组
NSArray *cmps = [path pathComponents];
NSLog(@"%@", cmps); // path是一个字符串常量,是不可变的
path = @"/users/mj/test";
// 判断是够为绝对路径(依据是前面有无/)
NSLog(@"%i", [path isAbsolutePath]);
NSLog(@"最后一个目录:%@", [path lastPathComponent]);
// 删除最后一个目录
NSLog(@"%@", [path stringByDeletingLastPathComponent]);
// 在最后面拼接一个目录
NSLog(@"%@", [path stringByAppendingPathComponent:@"abc"]);
} #pragma mark 拓展名处理
void extension() {
NSString *str = @"/User/MJ/test.txt"; NSLog(@"拓展名:%@", [str pathExtension]);
// 删除拓展名
NSLog(@"%@", [str stringByDeletingPathExtension]);
// 添加拓展名
NSLog(@"%@", [@"abc" stringByAppendingPathExtension:@"mp3"]);
} #pragma mark 其他用法
void other() {
NSString *str = @"";
int a = [str intValue];
NSLog(@"%i", a); // 计算字数,不是计算字符数
NSLog(@"length=%zi", [@"我是字符串123" length]); // 取出对应的字符
unichar c = [@"abc" characterAtIndex:];
NSLog(@"%c", c); // 返回C语言中的字符串
const char *s = [@"abc" UTF8String];
NSLog(@"%s", s);
} int main(int argc, const char * argv[])
{ @autoreleasepool {
other();
}
return ;
}
05-11 14:03