Objective-C 5 NSString常用方法
2016-01-03 15:10
495 查看
计算机与人类会经常进行交互,这就需要一个可以存储和处理人类可读文本的方式。这就是有了字符串的存在。
Objective-C语法中处理字符串的是NSString类和NSMutableString类,就像java中的String类和StringBuffer类,一个是不可变字符串,一个是可变字符串。
NSString类提供了大量初始化和使用方法,现在我们介绍一下。
2、创建字面量字符串
NSString *str1 = @"Hi"; 这些字面量字符串和我们平常创建的并无差别。
3、创建空字符串
4、创建字符串并赋值
这两种方法创建的字符串只有内存释放之间的差异。
5、创建格式化字符串
NSString可以通过格式字符串和参数创建字符串。
有与之对应的静态方法。stringWithFormat:
上面第一种方法,需要在不使用的时候release,也就是释放内存,第二种不需要释放。
格式化对应的符合
6、用C字符串创建字符串
将C字符串转换成OC字符串
也可以这样NSString *str5 = [[NSString alloc] stringWithUTF8String:"这是C字符串"];
输出结果为:这是C字符串
长度分别为 6 和11,这说明汉字长度和字符都为1。
8、OC字符串转换为C字符串
9、类型转换
NSString可以转换成基本数据类型,方法如下:
10、大小写变换
输出结果为:
11、字符串比较
如果只是比较字符串是否相同,就可以使用isEqualToString:方法
res的值为NO。
另一个比较方法是comapre:
-(NSComparisonResult)compare:(NSString *)string
返回类型是一个枚举NSComparisonResult
res的值为:-1
12、子串
在字符串中查看是否包含子串。
hasPrefixe 匹配字符串头
haSuffix 匹配字符串的尾
结果pre = YES suf = YES
在一个字符串中查看子串的范围,以及替换。
输出结果为:
如果查找不到字符串那么结果range对应的location为9223372036854775807。9223372036854775807
9223372036854775807
Objective-C语法中处理字符串的是NSString类和NSMutableString类,就像java中的String类和StringBuffer类,一个是不可变字符串,一个是可变字符串。
NSString类提供了大量初始化和使用方法,现在我们介绍一下。
初始化
1、C语言和OC中字符串C语言字符串 char *str_c = "C String"; OC中字符串 NSString *str_oc = "OC String"
2、创建字面量字符串
NSString *str1 = @"Hi"; 这些字面量字符串和我们平常创建的并无差别。
3、创建空字符串
//创建空字符串 NSString *str2 = [[NSString alloc] init]; //赋值 *str2 = @"jinkesi";
4、创建字符串并赋值
//可以通过实例方法创建 NSString *str3 = [[NSString alloc] initWithString:@"jinkesi"];
//也可以通过静态方法创建 NSString *str3 = [NSString stringWithString:@"jinkesi"];
这两种方法创建的字符串只有内存释放之间的差异。
5、创建格式化字符串
NSString可以通过格式字符串和参数创建字符串。
//1 通过动态方法创建 NSString *str4 = [[NSString alloc] initWithFormat:@"VN age is %i,height is %.2f",19,1.75f]; //结果为:VN age is 19,height is 1.75
有与之对应的静态方法。stringWithFormat:
NSString *str4 = [NSString stringWithFormat:@"VN age is %i,height is %.2f",19,1.75f];
上面第一种方法,需要在不使用的时候release,也就是释放内存,第二种不需要释放。
格式化对应的符合
%@ 对象 %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字符串创建字符串
将C字符串转换成OC字符串
char *Cstring = "这是C字符串"; NSString *str5 = [[NSString alloc] initWithUTF8String:Cstring]; NSLog(@"str5:%@",str5);
也可以这样NSString *str5 = [[NSString alloc] stringWithUTF8String:"这是C字符串"];
输出结果为:这是C字符串
常用方法
7、字符串长度[@<span style="font-family: Arial, Helvetica, sans-serif;">"这是C字符串" </span>length]; [@"hello world" length];
长度分别为 6 和11,这说明汉字长度和字符都为1。
8、OC字符串转换为C字符串
char *cs = [@"abcd" UTF8String];
9、类型转换
NSString可以转换成基本数据类型,方法如下:
int a = [@"100" intValue]; float b = [@"12.0" floatValue]; double c = [@"134" doubleValue]; NSLog(@"a = %i", a); NSLog(@"b = %f", b); NSLog(@"a = %f", c);输出结果为:
2016-01-06 20:27:31.134 命令行工程[8853:680340] a = 100 2016-01-06 20:27:31.134 命令行工程[8853:680340] b = 12.000000 2016-01-06 20:27:31.134 命令行工程[8853:680340] a = 134.000000
10、大小写变换
NSLog(@"小写变大写:%@",[@"hello" uppercaseString]); NSLog(@"大写变小写:%@",[@"HELLO" lowercaseString]); NSLog(@"首字母大写其他小写:%@",[@"hello"capitalizedString]);
输出结果为:
小写变大写:HELLO 大写变小写:hello 首字母大写其他小写:Hello
11、字符串比较
如果只是比较字符串是否相同,就可以使用isEqualToString:方法
NSString *str1 = @"第一个字符串"; NSString *str2 = @"第二个字符串"; BOOL res = [str1 isEqualToString:str2];
res的值为NO。
另一个比较方法是comapre:
-(NSComparisonResult)compare:(NSString *)string
返回类型是一个枚举NSComparisonResult
typedef enum _NSComparisonResult { NSOrderedAscending = -1, // < 升序 NSOrderedSame, // = 等于 NSOrderedDescending // > 降序 }
NSString *str1 = @"第一个字符串"; NSString *str2 = @"第二个字符串"; NSComparisonResult res = [str1 compare:str2];
res的值为:-1
12、子串
在字符串中查看是否包含子串。
hasPrefixe 匹配字符串头
haSuffix 匹配字符串的尾
//字符串abcdef是否是以字符串ab开头的。 BOOL pre = [@"abcdef" hasPrefix:@"ab"]; //字符串abcdef是否是以字符串ef结尾的。 BOOL suf = [@"abcdef" hasSuffix:@"ef"];
结果pre = YES suf = YES
在一个字符串中查看子串的范围,以及替换。
NSString *str = @"他喜欢玩adc中的 vn和 jinkesi"; NSString *adc = @"adc"; NSString *stone = @"石头人"; NSRange rang = [str rangeOfString:adc]; NSRange rang1 = [str rangeOfString:stone]; NSLog(@"adc在str中起始点的index 为 %lu", (unsigned long)rang.location); NSLog(@"石头人 在字符串 string中的起点的index 为 %lu",(unsigned long)rang1.location); //将搜索中的字符串替换成为一个新的字符串 NSString *str1 = [str stringByReplacingCharactersInRange:rang withString:@"打野"]; NSLog(@"替换后字符串为:%@", str1); //将字符串中" " 全部替换成 * NSString *str2 = [str stringByReplacingOccurrencesOfString :@" " withString:@"*"]; NSLog(@"替换后字符串为:%@", str2);
输出结果为:
2016-01-06 20:18:03.050 命令行工程[8794:674762] adc在str中起始点的index 为 4 2016-01-06 20:18:03.050 命令行工程[8794:674762] 石头人 在字符串 string中的起点的index 为 9223372036854775807 2016-01-06 20:18:03.051 命令行工程[8794:674762] 替换后字符串为:他喜欢玩打野中的 vn和 jinkesi 2016-01-06 20:18:03.051 命令行工程[8794:674762] 替换后字符串为:他喜欢玩adc中的*vn和*jinkesi
如果查找不到字符串那么结果range对应的location为9223372036854775807。9223372036854775807
9223372036854775807
相关文章推荐
- Objective-c语言_初始化类型不相同错误
- Objective-C语言——内存管理1
- Objective-c语言_练习题3
- Objective-C学习篇第十一弹:load和initialize方法详解
- Objective-C之成魔之路【9-类构造方法和成员变量作用域、以及变量】
- Objective-C语言——委托模式(代理模式)
- objectarx开发的环境设置
- 在Objective-c里面使用property教程
- dynamic、object、var 之间的区别
- 个人理解的IOS开发Objective-C中的属性readwrite,readonly,retain,assign,copy,nonatomic,strong,weak.
- setObject()用法
- NSString用法,object-C数组以及字符串拼接和分割
- Objective-C学习日志3
- Objective-C中的单例模式(工具类)
- java重写Object类方法
- Objective-C语言——单例模式
- Objective-C语言——Protocol协议
- Objective-C语言——Extension延展
- C#中var、int、object性能比较
- C#中var、int、object性能比较