【Objective-C编程】深入显出字符串NSString
【Objective-C编程】深入浅出字符串NSString
Oc的字符串处理在Cocoa中有两大类,NSString和NSMutableString,既然为类那么创建出来的也必定为对象
创建字符串对象时 会创建一个内容不可改变的对象,这个对象称为不可变对象
可以使用NSString类处理不可变字符串
如果经常需要处理字符串或者更改字符串中的字符 我们可使用NSMutableString类(动态字符串)。本章博客主要围绕NSString类来讲。
1.NSString创建
NSString提供了许多创建和初始化新字符串的方法。下面这个是创建常量字符串的。 它是编译到可执行文件中的NSString的实例,它不会在内存中消失。
NSString *hello = @"hello"; // 声明 NSString *append = [hello stringByAppendingString:@"world!"]; // 追加 NSString *helloStr = [[NSString alloc] initWithString:@"hello world"]; //分配内存并初始化
2.字符串的比较
NSString* str =@"hello"; NSString* appedStr =@"hello"; BOOL result =[str isEqualToString:appedStr]; if (result){ NSLog(@"相等的"); }结果:
2015-08-03 17:17:11.735 HelloWorld[1201:831501] 相等的
3.字符串的转换
// 字符串转数字 NSString *ss = @"123"; int a = [ss intValue] + 13; // 字符串转int型 double dd = [ss doubleValue] + 33.3; // 字符串转double型 // 字符串转数组 NSString *string = @"one,two,three,four"; NSArray *array = [string componentsSeparatedByString:@","]; // 通过逗号分隔字符串转化为数组 NSLog(@"array:%@", array); // 输出整个数组中所有元素 NSString *value = [array objectAtIndex:0]; // 取出第0个元素 NSLog(@"value:%@", value); // 数组转字符串 NSString *str = [array componentsJoinedByString:@","]; NSLog(@"str:%@", str);
4.字符串的分割
// 字符串转数字 NSString *nstring = @"a,b,c,d,e"; NSArray *array = [nstring componentsSeparatedByString:@","]; for (int i = 0; i < [array count]; i++) { NSLog(@"string:%@", [array objectAtIndex:i]); }
5.格式化字符串
NSString *format = [NSString stringWithFormat:@"1 + 1 = %i", 2]; // 格式化
%@ 对象 %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.常见的NSString方法
计算字符串长度 [str length]; 将一个字符串复制到另一个字符串 [NSString stringWithString: str1]; 将一个字符串复制到另一个字符串尾端 [str stringByAppendingString:@""]; 判断字符串是否相等 [str1 isEqualToString : str2] 将字符串转成大写 [str uppercaseString]; 将字符串转成小写 [str lowercaseString]; 验证字符串是否大于,等于或小于另一个字符串(大小写区分) switch ([str1 compare:str2]) { case NSOrderedDescending: //str1 > str2 break; case NSOrderedSame: //str1 = str2 break; case NSOrderedAscending: //str1 < str2; break; default: break; } 验证字符串是否大于,等于或小于另一个字符串(大小写不区分) 大小写不区分 可以使用 caseInsensitiveCompare [str caseInsensitiveCompare:@""]; 从字符串中提取前n个字符 [str substringToIndex:n]; 从字符串中提取从索引n开始到结尾的子字符串 [str substringFromIndex:n]; 从字符串中提取从索引n到索引m的子字符串(m-n个字符) [[str substringFromIndex:n] substringToIndex: (m-n)]; [str substringWithRange:NSMakeRange(n, (m-n))]; 从字符串中查找字符串 NSString *str = @"abcdefghijklmnopq"; NSRange range = [str rangeOfString:@"cde"]; NSLog(@"位置:%lu 长度:%lu",range.location,range.length);
ok.关于Oc的NSString就分享到此,有讲得不对的地方还望指出进行探讨互相学习!
版权声明:本文为博主原创文章,未经博主允许不得转载。