NSString&NSMutableString
来源:互联网 发布:苹果手机java编程软件 编辑:程序博客网 时间:2024/05/22 02:06
NSString and NSMutableString (一)
1.NSString(不可变字符串)
1)讲字符串之前,我们先了解下字符串相关有用的数据类型,Cocoa为我门准备了一个字符串操作相关的结构体NSRange
。
typedef struct _NSRange{ NSUInteger location; NSUInteger length;}NSRange;
location,表示其实位置,字符串时从0开始的。length,表示长度。
调用NSRange的方式有三种:
1 NSRange range=NSMakeRange(10,5);
2 NSRange range; range.location=10; range.length=5;
3 NSRange range={10,3};
一般第一种方式比较常用。
2)字符串创建
1. NSString *string=@"字符串内容(中英文都可以)";2. NSString *string=[NSString new];//这里是实例化一个NSString对象,对象stirng的值为NULL。OC中[]代表调用方法,以后这种调用方式会很常见到。3. NSString *string = [NSString stringWithFormat:@"我今年%d岁了",5];//string="我今年5岁了";这是NSString的类方法创建字符串。4. NSString *string =[[NSString alloc]initWithFormat:@"Hello"];//....同样类似的实例方法还有很多:-(id)initWithString:(NSString *)aString;-(id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding;//....不写了,具体可以看API
3)字符串长度
NSString已经帮我们封装好了一个便利的实例方法:length,用于返回一个字符串中的字符个数。
-(unsigned int)length;
NSString *s=@"Hello";unsigned long len=[string length];//一般不会这么用,麻烦,直接用.length就可以得到字符串长度了。NSLog(@"Hello的长度是:%ld",s.length);//length是无符号的长整型,用%ld接收。
4)字符串常用的几种方法
字符串比较
<1>比较两个字符串的指针
比较两个字符串的指针,可以直接用“==”来判断
NSString *str1=@"Hello";NSString *str2=[NSString stringWithFormat:@"Hello"];if(str1==str2){ NSLog(@"指针相同");}else{ NSLog(@"指针不同");}//这里输出的是指针不同,注意,stringWithFormat得到的字符串时一个新的字符串对象(深拷贝)。如果用stringWithString得到的是一个浅拷贝对象,它们指向同一个对象,所以指针相同。
<2>比较两个字符串的内容
-(BOOL) isEqualToString:(NSString *)aString;//aString就是参与比较的第二个字符串,如果内容相同,返回YES(1),反之,返回NO(0)。
if([@"Hello" isEqualToString :@"Hello"]){ NSLog(@"内容相同");}else{ NSLog(@"内容不相同");}//内容明显是相同的,[string1 isEqualToString string2]。
字符串拼接
讲到字符串拼接,LZ很不习惯啊,以前C#的+连接符特别习惯,换到OC却不给用…
那么OC中怎么拼接呢?拼接NSString也为我们提供了实例方法:
-(NSString )stringByAppendingString:(NSString )aString;
-(NSString )stirngByAppendingFormat:(NSString )format…;NSString *str=@"LOL我表哥是";NSString *newStr=[str stringByAppendingString:@"黄金5段位"];//newStr=LOL我表哥是黄金5段位NSString *str2=@"i want to buy ";NSString *newStr2=[str2 stringByAppendingFormat:@"iphone%ds",5];//newStr2=i want to buy iphone5s
字符串查找、截取
查找
-(BOOL)hasPrefix:(NSString *)string;//判断一个字符串是否以stirng开头
-(BOOL)hasSuffix:(NSString *)string;//判断一个字符串是否以stirng结尾
//当我们用来查找文件时非常有用,可以获取文件名用字符串保存起来,再适当调用上述两个方法NSString *fileName=@"ios-7-24.doc";if([fileName hasPrefix :@"ios"]){ NSLog(@"这个文件跟iOS相关");}if([fileName hasSuffix :@".doc"]){ NSLog(@"这个文件是word文档");}
除此之外我们之前一开始讲了NSRange,也可以通过NSRange来查找,例子走起:
NSString *fileName=@"ios-7-24.doc";NSRange range=[fileName rangeOfString :@"24"];//location=6,length=2;从0开始数起...//假如没有查找到,range.location=NSNotFound。这点非常重要,通常适用于while循环查找的跳出条件。
截取
-(unichar)characterAtIndex:(NSUInteger)index:index;//字符串索引时从0开始的,这点要牢记。
NSString *str=@"my name is GuoMingJian.";char c=[str characterAtIndex:14];NSLog(@"%c",c);//结果为:M
-(NSString *)substringFromIndex:(NSUInteger)from:index;//包含from位置的字符。
NSString *str=@"my name is GuoMingJian.";NSString *newStr=[str substringFromIndex:11];//11位置是G,这里是G到字符串结尾NSLog(@"%@",newStr);//结果为:GuoMingJian.
-(NSString *)substringToIndex:(NSUInteger)to:index;//这里不包含to位置的字符
NSString *str=@"my name is GuoMingJian.";NSString *newStr=[str substringToIndex:7];//位置是name后面的空格,这里是字符串0到索引7NSLog(@"%@",newStr);//结果为:my name//name后无空格
-(NSString *)substringWithRange:(NSRange)range:range;
NSString *str=@"my name is GuoMingJian.";NSString *newStr=[str substringWithRange:NSMakeRange(3,6)];NSLog(@"%@",newStr);//结果为:name i//从索引3位置开始(包括3)截取长度为6的字符串。
字符串的转换函数
-(double)doubleValue;
-(float)floatValue;
-(int)intValue;
double d=[@"123" doubleValue];float f=[@"123" floatValue];int i=[@"123" intValue];NSLog(@"%.2f;%.2f,%d",d,f,i);//123.00;123.00,123
字符串替换函数
替换函数也是比较重要,也挺好用的。希望能掌握…
-(NSString *)stringByReplacingOccurrencesOfString:
(NSString )target withString:(NSString )rep;//将rep替换targetNSString *str=[@"i am a guy" stringByReplacingOccurrencesOfString:@"guy" withString:@"gay"];NSLog(@"%@",str);//i am a gay
-(NSString *)stringByReplacingCharactersInRange:
(NSRange)range withString:(NSString *)rep;
//将原字符串range范围的字符替换成rep//NSString *str=[@"i am a guy" stringByReplacingCharactersInRange:NSMakeRange(7,3) withString:@"gay"];NSRange range=NSMakeRange(7,3);NSString *str=[@"i am a guy" stringByReplacingCharactersInRange:range withString:@"gay"];NSLog(@"%@",str);//i am a gay
分隔符方法,componentsSeparatedByString 这个方法也很经常用到,比如处理一个很长且很有规律性的字符串,通常用它来格式化处理。它返回的是一个数组。
-(NSArray )componentsSeparatedByString:(NSString )separator;NSString *str=@"Hesbllo worsbld";NSArray *array=[str componentsSeparatedByString:@"sb"];for(id i in array){ NSLog(@"%@",i);}//结果://He//llo wor//ld
字符串大小写转换函数
-(NSString *)uppercaseString:;//将字符全部改成大写的
NSString *str=@"hello world";str=[str uppercaseString];NSLog(@"%@",str);//HELLO WORLD
-(NSString *)lowercaseString:;//将字符全部改成小写的
NSString *str=@"HELLO WORLD";str=[str lowercaseString];NSLog(@"%@",str);//hello world
-(NSString *)capitalizedString:;//将首个字符改成大写,其余的全部都小写
NSString *str=@"HELLO WORLD";str=[str capitalizedString];NSLog(@"%@",str);//Hello World
总结:NSString 的实例方法都会产生一个新的字符串,也就是说它并不是在原有的字符串改变其本身的。而NSString的子类NSMutableString就是在其本身操作的。子类NSMutableString也能使用父类NSStirng所有实例方法。
下节我们继续讲解NSMutableString。
- NSString NSMutableString
- NSString & NSMutableString
- NSString/NSMutableString
- NSString、NSMutableString
- NSString NSMutableString
- NSString,NSMutableString
- NSString/NSMutableString
- NSString&NSMutableString
- NSString/NSMutableString
- NSString NSMutableString
- NSString NSMutableString 截取
- NSString,nsmutablestring,nsset,nsdictionary
- NSString 和 NSMutableString
- NSString / NSMutableString 字符串处理
- ObjectiveC - NSString & NSMutableString
- NSString与NSMutableString用法
- NSMutableString 转换NSString
- NSString/NSMutableString常用函数
- 安装eclipse插件,重启后报错,恢复启动方法备忘
- HDU 2437 Jerboas (DFS + 同余剪枝,建图细节)
- (C/C++学习笔记)操作符重载的两种方法
- 什么叫工作到位?
- jQuery ajax参数详解
- NSString&NSMutableString
- Android 中listview 和scrollview 滚动冲突事件的解决方法
- LeetCode224——Basic Calculator
- OC NSArray 和 NSMutableArray 常用方法的使用和实例
- Leetcode #107 Binary Tree Level Order Traversal II
- JavaSE----API之常用类(Object、Scanner、String)
- 【asp.net】用户控件&自定义控件
- POJ1922
- HDU 1875 畅通工程再续