一 : 小表妹
我有一个小表妹,她叫叶菁菁。二 : 《C#妹妹和Objective-C阿姨对话录》(03)NSString--再遇狗狗
C#妹妹:哇,冤家路窄啊,这个不是Objective-C阿姨家的狗狗么?
狗狗:日,到底谁跟谁是冤家。。
C#妹妹:不服气呀~再给你弄一陀吃吃。。
view sourceprint?01 #import <Foundation/Foundation.h>
02 #import "Dog.h"
03
04 int main (int argc, const char * argv[])
05 {
06
07 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
08 Dog *d=[Dog new];
09 [d Eat:@"便便" EatQty:1];
10 [d release];
11 [pool drain];
12 return 0;
13 }
狗狗:
C#妹妹:操,升级啦,看姐姐我扒你的皮,毁你的源代码。。
Objective-C阿姨:你这个小姑娘为啥总跟我狗狗过不去呀。
C#妹妹:它不吃屎也就罢了,还说什么“你留着自己吃。。。”,肯定程序出问题了,我帮他调试一下。
Objective-C阿姨:就是怕你再害它,我昨天给他升级了。。。现在代码是这个样子。。
view sourceprint?01 #import "Dog.h"
02 @implementation Dog
03 -(void) Sound
04 {
05 NSLog(@"汪汪!");
06 }
07 BOOL isTrueFood(NSString *food)
08 {
09 NSRange r=[@",包子,骨头,肉,冰激凌," rangeOfString:[NSString stringWithFormat:@"%@%@%@",@",",food,@","]];
10 if(r.length>0)
11 return(YES);
12 else
13 return(NO);
14
15 }
16 -(void) Eat:(NSString *) food EatQty:(int) count
17 {
18 if(isTrueFood(food)==YES)
19 {
20 NSLog(@"吃%d斤%@",count,food);
21 }
22 else
23 {
24 NSLog(@"你留着自己吃吧。。。");
25 }
26 }
27 @end//Dog
C#妹妹:哇,我们天朝特色的敏感词语过滤技术你都用上了。。。真是同一个世界,同一个噩梦啊。。。
Objective-C阿姨:,你能不能少贫点。。。。
C#妹妹:貌似其他都能看懂,除了这一句不太明白
view sourceprint?NSRange r=[@",包子,骨头,肉,冰激凌," rangeOfString:[NSString stringWithFormat:@"%@%@%@",@",",food,@","]];
Objective-C阿姨:这个语句里边就是用了两个NSString的方法。一个是实例方法rangeOfString,一个是类方法stringWithFormat。NSString是Cocoa中用于字符串处理的类,比C原始的字符串数组方便了很多,就像.NET的String一样,内置了很多方法。
rangeOfString:功能类似与.NET中的String.IndexOf,判断一个字符串在另一个字符串中的位置,但是返回的类型是NSRange,而不是数字
NSRange的定义估计你一看就知道怎么回事了
view sourceprint?1 typedef struct _NSRange {
2 NSUInteger location;//起始位置
3 NSUInteger length;//长度
4 } NSRange;
其实NSRange.location就相当于.NET中String.IndexOf的返回值。
C#妹妹:但是.NET中如果IndexOf检索不到相应的内容,返回负数,而这个location是NSUInteger类型,看起来这个类型是一种无符号整数啊,如何表示检索不到内容呢?
Objective-C阿姨:有两种方法可以解决这个问题。一种是判断length的长度,如果长度为0,表示没有找到相应的内容,另外一种判断location是否等于NSNotFound。其实NSNotFound就是NSUInteger的最大值LONG_MAX
C#妹妹:挺经典的,.NET里用负数表示检索不到内容,Objective-C里边用最大值表示。
Objective-C阿姨:是的,rangeOfString的用法类似这样
view sourceprint?1 NSString*word=@"tive";
2 NSString *str=@"这是Objective-C家的狗狗!";
3 NSLog(@"在字符串‘%@’中搜索‘%@’",str,word);
4 NSRange r=[str rangeOfString:word];//在str中搜索word 返回NSRange 里边包含{location和length}
5 if(r.location==NSNotFound)//这里判断if(r.length<=0)也是一样的
6 NSLog(@"这句话里没有找到%@",word);
7 else
8 NSLog(@"这句话中从第%lu个字符开始后边%lu个字符是%@",r.location+1,r.length,word);
rangeOfString还可以有个参数 判断是否区分大小写什么的。比如可以这样用
view sourceprint?NSRange r=[str rangeOfString:word options:NSCaseInsensitiveSearch];//NSCaseInsensitiveSearch表示不区分大小写
如果看着还有点晕,再回顾一次Objective-C给对象发送消息的方式吧
另外一个用到的函数
stringWithFormat:功能类似与.NET中的string.Format,也同样都是类方法,都是用来生成字符串的。用法你看看下面的例子
view sourceprint?NSString *str2=[NSString stringWithFormat:@"%@爱吃%@",@"狗狗",@"包子"]; NSLog(@"%@",str2);//这句话输出 狗狗爱吃包子
弄明白这两个方法,现在在看下面的语句应该就明白了吧。
view sourceprint?NSRange r=[@",包子,骨头,肉,冰激凌," rangeOfString:[NSString stringWithFormat:@"%@%@%@",@",",food,@","]];
其实是两个方法的嵌套
先向NSString类发送消息stringWithFormat生成食物名称的字符串,比如@“,包子,”
然后再向字符串@",包子,骨头,肉,冰激凌,"其实也就是NSString的实例发送消息rangeOfString检索@“,包子,”是否包含在字符串@",包子,骨头,肉,冰激凌,"中。
扩展:c语言 / c站 / cf
各位同学,本人学习Objective-C时间很短,学习Objective-C其实不是为了Mac、iPhone开发,并没有实用,
其实是一个C#用户学习Objective-C的学习笔记,学习的确切目的是帮助我理解C#,毕竟没有比较是不可能知道所谓C#的特点的
请大家批判的眼光看这个东西,如果发现和其他文章、书籍、评论、资料有冲突,请尽量以其他文章为准。并给我留言
也邀请所有高手积极拍砖
扩展:c语言 / c站 / cf
三 : 小表妹
我有一个小表妹,她很特别,偏偏在中秋节这天,从她妈妈的肚子里钻出来,所以大家都叫她月月。
小表妹的眼睛小小的,鼻子塌塌的,头发卷卷的好像来到世界上之前就烫过似的,一双胖胖的小手似乎永远是热乎乎的,小脚不但胖胖的,还很有力,最诱人的是那红彤彤的小脸蛋,好像一个成熟的苹果。
月月不但长得可爱,还很有趣哩!有一次,外婆在哄月月睡觉,忘记唱摇篮曲了,过了一会儿,“咿咿呀呀”的声音传来,喔,原来月月自己在唱摇篮曲,唱着唱着,便睡着了。
这就是我的小表妹月月,她的可爱和有趣,不知给我们全家带来了多少快乐呀!
宁波市实验小学4年级 吴含章
四 : 小表妹
我有一个小表妹,她叫叶菁菁。
她的脸蛋圆嘟嘟的,一双大眼睛炯炯有神。还有就是她的眼睫毛卷卷的,漂亮极了。
有的时候表妹很小气。有一次我想跟她要一串香珠,她坚决不给,但是我不会就此罢休的。有几次,我还向她要,可是她还是不给,我彻底服她了。
我的表妹虽然小气但她还是有许多优点,尤其是她的活泼。有一次,我和她去北海市的中山公园,那是我们从小玩到大的地方。这天,我们又去了,我总觉得提不起精神,大概表妹看出了我的无精打采,表妹一路上做了许多稀奇古怪的动作,只见她一会儿扮孙悟空,一会儿扮猪八戒,逗得我哈哈大笑。
你看,这就是让我欢喜,又让我无奈的小表妹。
本文标题:小阿姨和表妹-小表妹
61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1