linux怎么查看本机内存大小
415
2022-08-24
Objective-C语法之字符串NSString
Objective-C里核心的处理字符串的类就是NSString和NSMutableString这两个类,这两个类完成了Objective-C中字符串大部分功能的处理。这两个类的最主要的区别是NSString创建赋值后不能动态修改长度和内容,除非给重新赋值。而NSMutableString类似与链表的,在创建赋值后可以进行修改长度,插入,删除等操作。
注:以下代码运行环境是:XCode 4.3.2 ,IOS 5.1。
NSString提供了许多创建和初始化新字符串的方法。下面这个是创建常量字符串的。 它是编译到可执行文件中的NSString的实例,它不会在内存中消失。例子:
1、创建常量字符串。
NSString *astring = @"我是字符串";
2、NSString的内存地址
NSString *string1 = @"我是甲一号";
NSString *string2 = @"我是甲一号";
BOOL
if(result){
NSLog(@"address:%p", string1);
NSLog(@"address:%p", string2);
}
运行打印结果:
2012-07-30 09:36:41.337 objectiveC[613:403] yiyang:0x10485b478
2012-07-30 09:36:41.339 objectiveC[613:403] yiyang:0x10485b478
说明result的值是YES,这里对比的是内存地址,@"我是甲一号"存储在文字常量区,string1和string2都指向这个字符串,所以指向的是同一个地址。
如果这样做NSString *string1 = @"我是甲一号";NSString *string2 = string1;BOOL result = string1==string2;
这时候result的值也YES了
看个例子就明白了。下面是字符串内存地址的例子
[cpp] view plain copy
//内存指向"我是字符串";NSString *astring = [[NSString alloc] init];"astring point address:0x%.8x", astring);"bstring point address:0x%.8x", bstring);"我是字符串";"重新赋值之后的astring point address:0x%.8x", astring);"astring:%@",astring);
打印结果如下:
[cpp] view plain copy
2012-06-14 11:35:31.226 NSString[2316:f803] astring point address:0x00b72a7c2012-06-14 11:35:31.227 NSString[2316:f803] bstring point address:0x000045bc2012-06-14 11:35:31.227 NSString[2316:f803] 重新赋值之后的astring point address:0x000045bc2012-06-14 11:35:31.227 NSString[2316:f803] astring:我是字符串
重新赋值后,astring 的地址和bstring地址一样了。
3、NSString字符串的比较
在NSString中,最直接的就是用isEqualTostring这个方法
[cpp] view plain copy
NSString* string1 = @"我是甲一号";"我是甲一号";BOOL result = [string1 isEqualToString:string2];if (result) {"字符串相同");}
打印结果:
[cpp] view plain copy
2012-06-14 11:49:10.442 NSString[2481:f803] 字符串相同
另外一个比较的方法:compare,他可以比较字符串的大小,它的返回类型是:NSOrderedAscending,NSorderedSame,NSorderedDescending(分别等于整数-1,0,1)。
[cpp] view plain copy
NSString* string1 = @"我是甲一号";"我是甲一号";BOOL result = [string1 compare:string2];if (result == NSOrderedSame) {"字符串相同");}
4、字符串分割:
[cpp] view plain copy
NSString *nstring = @"美国,加拿大,澳大利亚,津巴布韦,埃及";","];for (int i = 0; i < [array count]; i++) {"string:%@", [array objectAtIndex:i]);}
结果:
[cpp] view plain copy
2012-06-14 11:49:10.443 NSString[2481:f803] string:美国2012-06-14 11:49:10.443 NSString[2481:f803] string:加拿大2012-06-14 11:49:10.443 NSString[2481:f803] string:澳大利亚2012-06-14 11:49:10.443 NSString[2481:f803] string:津巴布韦2012-06-14 11:49:10.444 NSString[2481:f803] string:埃及
5、创建格式化字符串
[cpp] view plain copy
int a = 100;int b = 8;"%d.这是第 %i 字符串",a,b]];"astring:%@",astring);
格式化输出的符号
[cpp] view plain copy
%@ 对象%d, %i 整数%u 无符整形%f 浮点/双字%x, %X 二进制整数%o 八进制整数%zu size_t%p 指针%e 浮点/双字 (科学计算)%g 浮点/双字%s C 字符串%.*s Pascal字符串%c 字符%C unichar%lld 64位长整数(long long)%llu 无符64位长整数%Lf 64位双字%e 是实数,用科学计数法计的
6、用标准c创建字符串:initWithUTF8String方法
[cpp] view plain copy
char *Cstring = "我是字符串";NSString *astring = [[NSString alloc] initWithUTF8String:Cstring];NSLog(@"astring:%@",astring);
结果:2012-06-14 13:47:23.956 NSString[2850:f803] astring:我是字符串
7、在串中搜索子串和替换
hasPrefixe 匹配字符串头haSuffix 匹配字符串的尾巴
[cpp] view plain copy
NSString *string1 = @"卡拉是条狗";"狗狗叫卡拉";//字符串以开头比较if([string1 hasPrefix:@"卡拉"]){"字符串string1以卡拉开头");}//字符串以结尾比较if([string2 hasSuffix:@"卡拉"]){"string2字符串以卡拉结尾");}
搜索和替换
[cpp] view plain copy
NSString *string = @"我们是 gong产 主义 接班人";NSString *temp = @"gong产";NSString *me = @"我";NSRange rang = [string rangeOfString:temp];NSRange rang1 = [string rangeOfString:me];NSLog(@"搜索的字符串在string中起始点的index 为 %d", rang.location);NSLog(@"搜索的字符串在string中结束点的index 为 %d", rang.location + rang.length);NSLog(@"我 在字符串 string中的起点的index 为 %d",rang1.location);//将搜索中的字符串替换成为一个新的字符串NSString *str = [string stringByReplacingCharactersInRange:rang withString:@"大产"];NSLog(@"替换后字符串为%@", str);//将字符串中" " 全部替换成 *str = [string stringByReplacingOccurrencesOfString :@" " withString:@"*"];NSLog(@"替换后字符串为%@", str);
结果:
[cpp] view plain copy
2012-06-14 14:07:44.762 NSString[3107:f803] 搜索的字符串在string中起始点的index 为 42012-06-14 14:07:44.764 NSString[3107:f803] 搜索的字符串在string中结束点的index 为 92012-06-14 14:07:44.764 NSString[3107:f803] 我 在字符串 string中的起点的index 为 02012-06-14 14:07:44.765 NSString[3107:f803] 替换后字符串为我们是 大产 主义 接班人2012-06-14 14:07:44.765 NSString[3107:f803] 替换后字符串为我们是*gong产*主义*接班人
看到"我"字的index了吗?第一位的索引值是0。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~