MyException - 我的异常网
当前位置:我的异常网» 移动开发 » Object-C学习札记 基础部分(一)NSString常用方法

Object-C学习札记 基础部分(一)NSString常用方法

www.MyException.Cn  网友分享于:2013-07-02  浏览:168次
Object-C学习笔记 基础部分(一)NSString常用方法
个人学习笔记
NSString

--实例化方法--------------
NSString *str = [[NSString alloc] init];
NSString *str = [[[NSString alloc] init] autorelease];  

注意:在NSString 中存在自己的实例化和初始化的方法 例如:
NSString *str1 = [NSString stringWithCString:"new String" enconding: NSACIIStringEncoding];
NSString *str2 = [NSString alloc] initWithCString:"new String" enconding: NSACIIStringEncoding];
str1和str2两个对象是相同的。

--NSStringEncoding 中常用的字符编码----------------
     NSASCIIStringEncoding
     NSUTF8StringEncoding
     NSUnicodeStringEncoding

--NSString创建实例----------------
带“@”符号的方法只能定义含有英文和数字的NSString实例,例如:
NSString *str = "Hello money~";
--生成含有中文的NSString方法-------------
//此方法自动释放内存
+ (id)stringWithCString:(const char*)cString encoding:(NSStringEncoding)encoding;
//进行alloc后进行初始化
- (id)initWithCString:(const char*)cString encoding:(NSStringEncoding)encoding;
例如:
NSString *string = [NSString stringWithCString:"您好" encoding:NSUTF8StringEncoding];
NSString *string = [[NSString alloc] initWithCString:"您好" encoding:NSUTF8StringEncoding];

--使用格式创建字符串-------------
+ (id)stringWithFormat:(NSString *)format...
- (id)initWithFormat:(NSString *)format...
例如:
NSString *str = "hello";
NSString *string = [NSString stringWithFormat:@"%@ world",str];
NSLog(string); 结果:hello world
--常用的替换符--------------
%@ NSString实例
%d,%D,%i 整数
%u,%U 无符号整数
%x 将无符号整数以十六进制小写字母显示
%X 将无符号整数以十六进制大写字母显示
%f 小数
%c 字符
%s C语言字符串
%% 显示%字符本身

--------------------------
NSRange

--NSRange的定义
typedef struct _NSRange
{
     unsigned int location;
     unsigned int length;
}NSRange;

NSMakeRange函数
--这个函数比较特殊 返回一个NSRange的对象。
NSMakeRanger(unsigned int location,unsigned int length);
例如:
NSRange range = NSMakeRanger(0,5);
NSLog(@"location is %d,length is %d",range.location,range.length);

---------------------------
计算字符串长度
- (unsigned int)length;

---------------------------
字符串连接,插入和删除
1、连接
- (NSString *)stringByAppendingString:(NSString *)string;
- (NSString *)stringByAppendingFormat:(NSString *)format...;
例如:
     NSString *str1 = @"hello";
     NSString *str2 = @"world";
     NSString *str3 = [str1 stringByAppendingString:str2];
     NSString *str4 = [str2 stringByAppendingFormat:@"%d...%d",10,20];
     str4 --> world 10...20
   
     -----------------
     NSMutableString的生成
     NSString   + (id)string;  //生成空字符串的实例
     + (id)stringWithString:(NSString *)string;     //带自动释放内存
     - (id)initWithString:(NSString *)string;
     例如:
     NSMutableString *string = [NSMutableString stringWithString:@"hello"];
2、追加字符串
     NSMutableString
     + (void)appendString:(NSString *)string;
     - (void)appendFormat:(NSString *)format...;
     例如:
     NSMutableString string = [NSMutableString string];
     [string appendString:@"hello"];
     [string appendString:@"money"];
     [string appendString:@" and world"];
3、插入字符串
     NSMutableString
     + (void)insertString:(NSString *)string atIndex:(unsigned)index;
     从index位置插入字符串
     例如:
     NSMutableString *string = [NSMutableString stringWithString:@"Mac X"];
     [string insertString:@"OS" atIndex:4];
     string --> Mac OS X
4、删除字符串
     NSMutableString
     + (void)deleteCharactersInRange:(NSRange)range;
     例如:
     NSMutableString *string = [NSMutableString stringWithString:@"Mac os"];
     [string deleteCharactersInRange:NSMakeRanger(0,1)];
     NSLog(string);
     string -->ac os;
5、字符串比较
     NSString
     - (BOOL)isEqualToString:(NSString *)string;
6、比较前置串和后置串
     NSString
     - (BOOL)hasPrefix:(NSString *)string;
     - (BOOL)hasSuffix:(NSString *)string;
     例如:
     NSString *str1 = @"Mac OS";
     NSString *str2 = @"Mac Pro";
     BOOL flag;
     flag = [str1 hasPrefix:@"Mac"];  YES
     flag = [str2 hasSuffix:@"OS"];      NO
7、字符串检索
     NSString
     //如果找到就返回范围,否则NSRange的location项被设置为NSNotFound
     - (NSRange)rangeOfString:(NSString *)subString;
     - (NSRange)rangeOfString:(NSString *)subString option:(unsigned)mask;
     - (NSRange)rangeOfString:(NSString *)subString option:(unsigned)mask      range:(NSRange)range;                                                                                       
     -----mask常用选项列表
     NSCaseInsensitiveSearch          不区分字母大小写
     NSLiteralSearch          对字符串进行字节单位的比较,一般可提高检索速度
     NSBackwardsSearch     从范围的末尾开始检索
     NSAnchoredSearch     仅检索制定范围的前部。忽略字符串中间的检索字符
     例如:
     NSString *string = @"hello world";
     NSRange range = [string rangeOfString:@"he"];
     if(range.location != NSNotFound)
     {
          NSLog(@" location=%d,length=%d",range.location,range.length);
     }
8、截取字符串
     NSString
     - (NSString *)substringToIndex:(unsigned)index;     //返回字符串开头至index位的字符串 不包含索引位
     - (NSString *)substringFromIndex:(unsigned)index; //返回字符串第index位至末尾的字符串 包含索引位
     - (NSString *)substringWithRange:(NSRange)range;     //返回字符串中范围range内的字符串 包含索引位
     例如:
     NSString *string = [string substringWithRange:NSMakeRange(5,2)];
9、读取文本文件
     NSString
     + (id)stringWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError **)error     //自动释放内存
   
     - (id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error
   
     例如:
     NSString *string = [NSString stringWithContentsOfFile:@"/user/test/yw.txt" encoding:NSUTF8StringEncoding error:&error];
     if(string){}
10、输出文本文件
     NSString
     - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error
     //参数 atomically 暂时将文件保存到辅助文件中
     //path
     The file to which to write the receiver. If path contains a tilde (~) character, you must expand it with stringByExpandingTildeInPath before invoking this method.
    ----下面是网上找的例子 感谢 @chenshizero
    //扩展路径
    NSString *Path = @"~/NSData.txt";
    NSString *absolutePath = [Path stringByExpandingTildeInPath];
    NSLog(@"absolutePath:%@",absolutePath);
    NSLog(@"Path:%@",[absolutePath stringByAbbreviatingWithTildeInPath]);

    //文件扩展名
    NSString *Path = @"~/NSData.txt";
    NSLog(@"Extension:%@",[Path pathExtension]);

文章评论

亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
中美印日四国程序员比较
中美印日四国程序员比较
程序员的鄙视链
程序员的鄙视链
程序员必看的十大电影
程序员必看的十大电影
每天工作4小时的程序员
每天工作4小时的程序员
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
10个调试和排错的小建议
10个调试和排错的小建议
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员和编码员之间的区别
程序员和编码员之间的区别
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
代码女神横空出世
代码女神横空出世
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
我的丈夫是个程序员
我的丈夫是个程序员
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
Java程序员必看电影
Java程序员必看电影
如何成为一名黑客
如何成为一名黑客
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
那些争议最大的编程观点
那些争议最大的编程观点
我是如何打败拖延症的
我是如何打败拖延症的
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
 程序员的样子
程序员的样子
一个程序员的时间管理
一个程序员的时间管理
总结2014中国互联网十大段子
总结2014中国互联网十大段子
编程语言是女人
编程语言是女人
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
漫画:程序员的工作
漫画:程序员的工作
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
鲜为人知的编程真相
鲜为人知的编程真相
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员应该关注的一些事儿
程序员应该关注的一些事儿
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有