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就分享到此,有讲得不对的地方还望指出进行探讨互相学习!