objective-c学习之字符串!
来源:互联网 发布:通达信软件怎么样 编辑:程序博客网 时间:2024/04/29 05:21
1、字符串的创建
NSString *string1 = @"hello";
a、实例方法创建字符串【对象 方法】
NSString *string2 = [[NSString alloc] initWithString:string1]; NSLog(@"string2 = %@",string2);
b、类方法创建字符串【类名 方法】
NSString *string3 = [[NSString stringWithString:string1]; NSLog(@"string3 = %@",string3);
2、字符串格式化创建并且拼接
NSString *string4 = @"张三"; NSString *string5 = @"李四"; a、实例方法创建 NSString *string4 = [[NSString alloc] initWithFormat:@"%@--@",s1,s2]; NSLog(@"string4 = %@",string4); b、类方法创建 int age = 20; NSString *string5 = [NSString stringWithFormat:@"%@的年龄是%d",s1,age]; NSLog(@"string5 = %@",string5);
3、字符串的比较
NSString *s5 = @"abcd";NSString *s6 = @"abcd";if(s5 == s6){//这里判断的是s5和s6的指针地址是否相同,并不是比较其中的字符串 NSLog(@"s5的内存与s6的内存地址相等");}else{ NSLog(@"s5的内存和s6的内存地址不相等");}NSLog(@"s5的内存地址是%p",s5);//打印指针地址用%p NSLog(@"s6的内存地址是%p",s6);
a、isEqualToString方法:字符串内容比较,一般都用这个方法,是区分大小写
NSString *temps5 = [NSString stringWithFormat:@"abc%@",@"D"]; BOOL isEqual = [s5 isEqualToString:tempS5]; if(isEqual){ NSLog(@"s5与temps5内容一样"); }else { NSLog(@"s5与temps5内容不一样"); }
b、不区分大小写的比较方法
NSComparisonResult result = [s5 caseInsensitiveCompare:temps5]; if(result == NSOrderedSame){ NSLog(@"不区分大小写后,s5与temps5内容一样 }
4、输入大写或者小写字符串
NSString *s11 = @"This is a oc"; NSString *s12 = @"Objective"; NSLog(@"%@",[s11 uppercaseString]);//全部输出大写 NSLog(@"%@",[s12 lowercaseString]);//全部输出小写 NSLog(@"%@",[s12 capitalizedString]);//首字母大写输出
5、字符串的追加
NSString *s13 = @"hello"; NSString *s14 = @"world"; a、直接追加字符串 NSString *string13 = [s13 stringByAppendingString:s14];//这里的s14也可以直接为字符串 b、格式化追加字符串,比直接追加好,直接追加只能追加一个参数,格式化追加可以追加多个参数 NSString *string14 = [s13 stringByAppendingFormat:@"%@%d",s14,14];
6、字符串的查找
a、 NSString *s15 = @"www.csdn.net"; NSRange = [s15 rangeOfString:@"net"];//rangOfString前面的参数是被查找的字符串,后面的参数是需要查找字符串,此句意思就是在s15里面找net,这里的net也可以改为定义的其他字符串的名字 NSLog(@"%ld,%ld",range.location,range.length);//这里的location和length都是range结构体里。可以直接调用,打印出的结果为10 3,location从0开始算起 b、判断是否查找到 if(range.location != NSNotFound){//这里的NSNotfound在oc中是个宏定义,为LONG_MAX,意为一个最大的数,这个数只随32位和64位机器的改变才改变 NSLog(@"找到"); }else{ NSLog(@"没找到"); }
7、字符串的截取
a、 NSString *s18 = @"http://www.csdn.net"; NSString *string18 = [s18 substringToIndex:4];//截取前部分,从开头开始,也就是0位开始,但是取值不包括4这个位置,所以截取的结果为http NSString *string19 = [s18 substringFromIndex:5];//截取后部分,从指定的位置开始,截取到结束,但包括了指定位置,也就是包括了5,截取的结果为//www.csdn.net NSRange range = {2,5};//定义取值的位置和长度2表示location,5表示length NSString *string20 = [s18 substringWithRange:range];//表示从第二位开始截取5个字符,但是不包括2这个位置,结果为tp://b、字符串中取单个元素 NSString *s19 = @"qwerfasdhf"; char c = [s19 characterAtIndex:2];//通过下标取元素,这里取下标为2的元素,下标从0开始 NSLog(@"%c",c);//结果为ec、字符串的遍历 for (int i = 0;i < s19.length;i++){ char c1 = [s19 characterAtIndex:i]; NSLog(@"%c",c1); }
8、字符串与基本数据类型转换
a、\\int float double bool ---> NSString int age1 = 14; NSString *intStr = [NSString stringWithFormat:@"%d",age1];\\将int转换为NSString,使用的是创建格式化字符串的类方法 NSString *floatStr = [NSString stringWithFormat:@"%f",19.00];\\将float转换为NSString NSLog(@"%@,%@",intStr,floatStr); b、NSString --> Int Float int q = [intStr intValue];//将NSString强制转换为int float z = [floatStr floatValue];//将NSString强制转换为float c、转换后即可进行运算 int k = q + z; d、也可以强制转换为bool类型 BOOL isTure = [floatStr boolValue]; NSLog(@"isTure = %d",isTure);//打印结果为1,因非0即为1
9、查询字符串是否包含
NSString *s20 = @"http://csdn.net"; BOOL isPre = [s20 hasPrefix:@"http"];//判断是否包含前缀http,也就是开头字母是不是http,返回值为bool值 if(isPre){ NSLog(@"包含前缀"); }else { NSLog(@"不包含前缀"); } BOOL isSuf = [s20 hasSuffix:@"net"];//判断是否包含后缀net,也就是从最后一位开始看,往前找,看是不是最后三位为net if(issue){ NSLog(@"包含后缀"); }else { NSLog(@"不包含后缀"); }
10、compare方法:字符串比较,三种返回值
NSString *s7 = @"This is a String"; NSString *s8 = @"Tis is a String"; NSComparisonResult result1 = [s7 compare:s8];//这里定义的result1必须为NSComparisonResult型,因为这个是其枚举类型的返回值,如果写bool类型的话,会导致升序的返回值无法传入bool,因为bool只有0和1,而升序也就是NSOrderedAscending的返回值为-1,就没办法写入bool,经测试只能够写NSComparisonResult if (result1 == NSOrderedSame) { NSLog(@"s7 = s8"); }else if (result1 == NSOrderedAscending) { NSLog(@"s7<s8"); }else if (result1 == NSOrderedDescending) { NSLog(@"s7>s8"); }
其余记载:
stringWithFormat和initWithFormat的区别
+stringWithFormat:类方法,返回一个autorelease的NSString实例,不用手动Release,在自动释放池中会自动释放
-initWithFormat:实例方法,返回一个自己申请内存的NSString实例,根据OC内存管理黄金法则,管杀管埋,它则需要自己手动Release
因为这两个方法只是在没有使用ARC的时候有所不同,一个需要手动Release,一个则是自动进去autoreleasepool,所以在使用ARC的时候他们俩几乎没有什么区别。
以上这则其余记载摘录与另一位博友的博客!如有侵权,请通知我删除!
0 0
- objective-c学习之字符串!
- Objective-C 之字符串
- Objective-C之NSMutableString字符串
- objective-c 语法之字符串
- Objective-C基础之字符串
- Objective-c学习之路
- Objective-C 语法之字符串 NSMutableString
- Objective-C 语法之字符串 NSMutableString
- Objective-C 语法之字符串 NSMutableString
- Objective-C语法之字符串NSString
- Objective-C语法之字符串那些事
- objective-c字符串加密算法之NSHash
- Objective-C语法之字符串NSString
- Objective-C语法之字符串NSString
- Objective-C 初窥之字符串
- IOS开发之路-Objective-C 字符串
- Objective-C语法之字符串那些事
- 3,Objective-C语法之字符串NSString
- TestNG 入门
- 好玩的linux命令
- hdu 1709 母函数
- Xcode中添加图片文件报错误解决办法:Multiple errors occurred ...
- SpringMVC入门教程及其原理讲解
- objective-c学习之字符串!
- 实现activity全屏显示
- js获取页面加载过程做一个简单的loading
- ssh链接centos服务器速度过慢问题收集
- WebService学习之旅(七)Axis2发布WebService的几种方式
- jar5
- iOS开发中@selector的理解与应用
- mybatis 错误
- Jumb