1.init
初始化一个不包含字符串的NSString对象
NSString *initString1 = [[NSString alloc] init];
NSLog(@"initString1 ----------- %@",initString1);
[initString1 release];
2.initWithFormat
NSString *test2 = [[NSString alloc] initWithFormat:@"one%d",1];
3.initWithString
NSString *test1 = [[NSString alloc] initWithString:@"one"];
以上三种非常的简单也非常的常用,我想说的是下面几种:
4- (id)initWithBytes:(const void *)bytes length:(NSUInteger)len encoding:(NSStringEncoding)encoding;
初始化一个NSString对象包含给定的字节数,从一个给定的字节缓冲区,使用给定的编码进行解码。
NSString *initString2 = [[NSString alloc] initWithBytes:"感谢国家" length:6 encoding:NSUTF8StringEncoding];
NSLog(@"initString2 ----------- %@",initString2);
[initString2 release];
输出的值是:
2013-09-17 16:58:16.940 NSString[6022:303] initString2 ----------- 感谢
为什么长度为6输出2个字呢?
因为1. utf-8 如果系统采用的是utf-8,那么strlen(“感谢”)=6,即一个汉字占用3个字节。linux系统默认情况下采用的该种编码方式。
2. gb2312 如果系统采用的是gb2312,则strlen(“感谢”)=4,即一个汉字占用2个字节。windows中文版采用的该种编码方式。
ios gb2312编码
NSString支持的编码没有完全枚举出来,以下可以查看其支持的编码:
const NSStringEncoding *encodings = [NSString availableStringEncodings];
NSMutableString *str = [[NSMutableString alloc] init];
NSStringEncoding encoding;
while ((encoding = *encodings++) != 0)
{
[str appendFormat: @"%@ === %in", [NSString localizedNameOfStringEncoding:encoding], encoding];
NSLog(str);
}
使用其未列出枚举值的编码方法如下:
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding (kCFStringEncodingGB_18030_2000);
NSString *str = [[NSString alloc] initWithCString: pstr encoding: enc]; //或者直接使用其数值
5- (id)initWithUTF8String:(const char *)nullTerminatedCString
使用字节数组初始化一个NSString对象
char buffer3[] ={'h','e','l','l','o','\0'};
NSString *initString3 = [[NSString alloc] initWithUTF8String:buffer3];
NSLog(@"initString3 .......%@",initString3);
[initString3 release];
6- (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding;
NSData 初始化一个 NSString对象
NSData *data4 = [[NSData alloc] initWithBytes:"感谢国家" length:12];
NSString *initString4 = [[NSString alloc] initWithData:data4 encoding:NSUTF8StringEncoding];
NSLog(@"initString4 .......%@",initString4);
[initString4 release];
7+ (id)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error;
通过文件初始化一个 NSString对象
NSString *initString5 = [[NSString alloc] initWithContentsOfFile:@"/Users/aatc/Desktop/main.m" encoding:NSUTF8StringEncoding error:nil];
NSLog(@"initString5 .......%@",initString5);
[initString5 release];
通过url创建一个 NSString对象
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSString *initString6 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSLog(@"initString6 .......%@",initString6);
[initString6 release];
运行结果: