NSString几种创建方法

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];


8+ (id)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error;

通过url创建一个 NSString对象


NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
    NSString *initString6 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"initString6 .......%@",initString6);
    [initString6 release];

运行结果:


initString6 打印出html源代码。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值