ios开发之字符串初始化(一)

本文介绍了iOS中字符串初始化的各种方法,包括从Unicode字符序列、C语言字符串、文件和网络地址初始化。详细讲解了初始化函数的功能,特别是涉及的编码转换,并列举了多个示例,如initWithBytes系列函数,以及通过UTF8、NSData、C字符串、文件和URL来创建字符串的方法。
摘要由CSDN通过智能技术生成

ios提供了许多初始化函数。可以从字符数组初始化,从C语言字符串初始化,从文件初始化,从网络地址初始化……初始化操作主要功能是将不同编码的字符串转化为unicode编码的字符串。

以下为最基本的4个初始化函数

- (instancetype)initWithCharacters:(const unichar *)characters length:(NSUInteger)length;

根据unicode字符序列初始化字符串
参数characters是unicode字符序列,参数length是字符序列的长度

- (instancetype)initWithCharactersNoCopy:(unichar *)characters length:(NSUInteger)length
freeWhenDone:(BOOL)freeBuffer;
/* "NoCopy" is a hint */

根据unicode字符序列初始化字符串
参数characters是unicode字符序列,参数length是字符序列的长度,参数freeBuffer表示在初始化完成后是否释放字符序列占用的内存。内存释放后不能再使用。

- (nullable instancetype)initWithBytes:(const void *)bytes length:(NSUInteger)len 
encoding:(NSStringEncoding)encoding;

根据字符序列初始化字符串
参数bytes是字符序列,参数len是字符序列的长度,参数encoding是字符序列的编码方式。
initWithBytes解码bytes字符序列获取unicode字符序列,若解码失败则返回nil。

- (nullable instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len 
encoding:(NSStringEncoding)encoding freeWhenDone:(BOOL)freeBuffer;

根据字符序列初始化字符串
参数bytes是字符序列,参数len是字符序列的长度,参数encoding是字符序列的编码方式,参数freeBuffer表示在初始化完成后是否释放字符序列占用的内存。内存释放后不能再使用。
initWithBytesNoCopy解码bytes字符序列获取unicode字符序列,若解码失败则返回nil。

ios支持的编码格式有

typedef NSUInteger NSStringEncoding;
NS_ENUM(NSStringEncoding) {
    NSASCIIStringEncoding = 1,      /* 0..127 only */
    NSNEXTSTEPStringEncoding = 2,
    NSJapaneseEUCStringEncoding = 3,
    NSUTF8StringEncoding = 4,
    NSISOLatin1StringEncoding = 5,
    NSSymbolStringEncoding = 6,
    NSNonLossyASCIIStringEncoding = 7,
    NSShiftJISStringEncoding = 8,          
    /* kCFStringEncodingDOSJapanese */
    NSISOLatin2StringEncoding = 9,
    NSUnicodeStringEncoding = 10,
/* Cyrillic; same as AdobeStandardCyrillic */
    NSWindowsCP1252StringEncoding = 12,    /* WinLatin1 */
    NSWindowsCP1253StringEncoding = 13,    /* Greek */
    NSWindowsCP1254StringEncoding = 14,    /* Turkish */
    NSWindowsCP1250StringEncoding = 15,    /* WinLatin2 */
    NSISO2022JPStringEncoding = 21,        
    /* ISO 2022 Japanese encoding for e-mail */
    NSMacOSRomanStringEncoding = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值