在Objective-C中,处理字符串的类主要有NSString和NSMutableString。
NSString类是不可变的类,一旦对象被创建,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。
如下:
<pre name="code" class="objc">#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString* str = @"Hello";
NSString* book = @"《疯狂iOS讲义》";
//在str后面追加固定到字符串
//原来的字符串对象并不改变,只是将新生成的字符串重新赋值给str指针变量
str = [str stringByAppendingString:@",iOS!"];
NSLog(@"%@",str);
//获取字符串对应的C风格字符串
const char* cstr = [str UTF8String];
NSLog(@"获取的C字符串:%s",cstr);
//在str后面追加变量的字符串
str = [str stringByAppendingFormat:@"%@是一本非常不错的图书.",book];
NSLog(@"%@",str);
NSLog(@"str的字符个数为:%lu",[str length]);
NSLog(@"str按UTF-8字符集解码后字节数为:%lu",[str lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
//获取str的前10个字符串组成的字符串
NSString* s1 = [str substringToIndex:10];
NSLog(@"%@",s1);
//获取str从第5个字符开始,与后面字符串组成到字符串
NSString* s2 = [str substringFromIndex:5];
NSLog(@"%@",s2);
//获取str从第5个字符开始,到第15个字符组成第字符串
NSString* s3 = [str substringWithRange:NSMakeRange(5, 15)];
NSLog(@"%@",s3);
//获取iOS在str中出现的位置
NSRange pos = [str rangeOfString:@"iOS"];
NSLog(@"iOS在str中出现的开始位置:%ld , 长度为:%ld",pos.location ,pos.length);
//将str的所有字符转为大写
str = [str uppercaseString];
NSLog(@"%@",str);
}
return 0;
}
打印日志如下:
2014-08-26 00:40:52.780 NSStringTest2[642:303] Hello,iOS!
2014-08-26 00:40:52.782 NSStringTest2[642:303]获取的C字符串:Hello,iOS!
2014-08-26 00:40:52.782 NSStringTest2[642:303] Hello,iOS!《疯狂iOS讲义》是一本非常不错的图书.
2014-08-26 00:40:52.782 NSStringTest2[642:303] str的字符个数为:30
2014-08-26 00:40:52.783 NSStringTest2[642:303] str按UTF-8字符集解码后字节数为:62
2014-08-26 00:40:52.783 NSStringTest2[642:303] Hello,iOS!
2014-08-26 00:40:52.783 NSStringTest2[642:303] ,iOS!《疯狂iOS讲义》是一本非常不错的图书.
2014-08-26 00:40:52.784 NSStringTest2[642:303] ,iOS!《疯狂iOS讲义》是
2014-08-26 00:40:52.784 NSStringTest2[642:303] iOS在str中出现的开始位置:6 , 长度为:3
2014-08-26 00:40:52.784 NSStringTest2[642:303] HELLO,IOS!《疯狂IOS讲义》是一本非常不错的图书.
Program ended with exit code: 0
NSMutableString对象则代表一个字符序列可变的字符串,而且NSMutableString是NSString的子类,因此包含NSString的所有方法,可以直接使用。
看如下应用:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString* book = @"《疯狂iOS讲义》";
//创建一个NSMutableString对象
NSMutableString* str = [NSMutableString stringWithString:@"Hello"];
//追加固定字符串
//字符串所包含的字符序列本身发生里改变,因此无需重新赋值
[str appendString:@", iOS!"];
NSLog(@"%@",str);
//追加带变量带字符串
//字符串所包含的字符序列本身发生里改变,因此无需重新赋值
[str appendFormat:@"%@是一本非常不错的图书.",book];
NSLog(@"%@",str);
//在指定位置插入字符串
//字符串所包含的字符序列本身发生里改变,因此无需重新赋值
[str insertString:@"fkit.com" atIndex:6];
NSLog(@"%@",str);
//删除从6到12的所有字符集
[str deleteCharactersInRange:NSMakeRange(6, 12)];
NSLog(@"%@",str);
//将从6到9到字符串替换成Objective-C
[str replaceCharactersInRange:NSMakeRange(6, 9) withString:@"Objective-C"];
NSLog(@"%@",str);
}
return 0;
}
打印日志如下:
2014-08-25 23:56:46.918 NSMutableStringTest[388:303] Hello, iOS!
2014-08-25 23:56:46.919 NSMutableStringTest[388:303] Hello, iOS!《疯狂iOS讲义》是一本非常不错的图书.
2014-08-25 23:56:46.919 NSMutableStringTest[388:303] Hello,fkit.com iOS!《疯狂iOS讲义》是一本非常不错的图书.
2014-08-25 23:56:46.920 NSMutableStringTest[388:303] Hello,!《疯狂iOS讲义》是一本非常不错的图书.
2014-08-25 23:56:46.920 NSMutableStringTest[388:303] Hello,Objective-C》是一本非常不错的图书.
Program ended with exit code: 0