(1) Unicode字符串的操作 | 注: unichar是Unicode表现的一个字符的类型,不同于char 便利构造函数: 先自动呼出alloc的 - (id) initWithUTF8String: (const char*) bytes; 便利构造函数: + (id) stringWithUTF8String: (const char*) bytes; | 用和C一样以'\0'结尾的字符串生成 | - (__strong const char *) UTF8String; | 返回编码为UTF-8的C字符串指针 | - (NSUInteger) length; | 返回字符串长度 不同于C,不能用来计算需要的大小 (# TODO: check [?]) | - (unichar) characterAtIndex: (NSUInteger) index; | 获取第index个的Unicode字符 | - (id) initWithCharacters: (const unichar *) characters length: (NSUInteger) length 便利构造函数: + (id) stringWithCharacters: length: | 生成length长的以characters重复的字符串 | - (void) getCharacters: (unichar *) buffer range: (NSRange) aRange | 把aRange指定的范围的字符串复制到buffer 注: 不会自动加'\0' NSRange 开始位置和长度的结构体 buffer长度必须够 | | | |
(2) 指定字符编码的变换 | NSStringEncoding类型 | 指定字符码 如 NSASCIIStringEncoding | 7位的ASCII字码 | NSUTF8StringEncoding | Unicode字符的8位字码 UTF-8 | NSMaxOsRomanStringEncoding | 日语的8位EUC字码 | NSShiftJISStringEncoding | 日语的8位shiftJIS字码 | | | | - (id) initWithCString: (const char *) nullTerminatedCString encoding: (NSStringEncoding) encoding 便利构造函数: + (id) stringWithCString: encoding: 注: encoding表示data的生成方法,生成的对象的生成方法是Unicode | 通过指定编码的以'\0'结尾的字符串生成 | - (__strong const char *) cStringUsingEncoding: (NSStringEncoding) encoding | 指定字码来转换,无法转换会抛出例外 getCString:MaxLength:encoding: 可以直接放到准备好的内存里 | - (id) initWithData: (NSData *) data encoding: (NSStringEncoding) encoding 注: encoding表示data的生成方法,生成的对象的生成方法是Unicode | 通过以encoding字码写的data来生成 类似的有 initWithBytes:length:encoding: | - (NSData *) dataUsingEncoding: (NSStringEncoding) encoding 只获取长度: lengthOfBytesUsingEncoding: | 把受体的字符串通过encoding编码后返回NSData, 无法转换返回nil | - (BOOL) canBeConvertedToEncoding: (NSStringEncoding) encoding | 能不能被指定的字码转换 可以用 availableStringEncodings来查看当前环境可用的encoding | URL字符化 - (NSString *) stringByAddingPercentEscapesUsingEncoding: (NSStringEncoding) encoding String化 stringByReplacingPercentEscapesUsingEncoding: | 把受体根据encoding来%化,用在URL的字符串表达上 都在Foundation/NSURL.h | | | |
(3) 根据格式生成字符串 | | 格式规则和printf()里的一样 不同: 可用%@, NSString, 对象的description(NSString) 格式字符串也是NSString 注意: 用格式生成NSString时,格式修饰符的对象不会自动转型 | - (id) initWithFormat: (NSString *) format, ... 便利构造函数: stringWithFormat: | 根据格式生成字符串 可变长度的参数, 最后加... # TODO: Supply [10.2 可变长度的参数] | | | |
(4) 对比 | NSComparisionResult | enum _NSComparisionResult { NSOrderedAscending = -1, NSOrderedSame, NSOrderedDescending};typedef NSInteger NSComparisionResult; 相同返回NSOrderedSame, 小返回NSOrderedDescending, 大返回NSOrderedAscending | - (NSComparisionResult) compare: (NSString *) aString | 字符串的比较, aString不能为nil 只是比较是否相同的话可用 - (BOOL) isEqualToString: (NSString *) aString | - (NSComparisionResult) caseInsensitiveCompare: (NSString *) aString | 无视大小写的比较 其他方法来比较的话用:compare:option: | - (NSComparisionResult) localizedStandardCompare: (NSString *) aString | Mac的Finder里文件名排序相同的方法来比较 | - (BOOL) isEqualToString: (NSString *) aString | 与指定NSString是否相同 | - (BOOL) hasPrefix: (NSString *) aString | 开头是否和aString相同(是否有指定前缀) | - (BOOL) hasSuffix: (NSString *) aString | 结尾是否与aString相同 | commonPrefixWithString:options: | 从开头取出相同的字符串 | | | | | |
(5) 连接 | - (NSString *) stringByAppendingString: (NSString *) astring | 把aString连接在最后 | - (NSString *) stringByAppendingFormat: (NSString *) format, ... | 把根据格式生成的字符串连接在最后 | | | | | |
(6) 子字符串 | ?Objective-C都tm什么鬼,怎么啥都给命个怪名啊?我他娘的意大利炮呢? - (NSString *) substringToIndex: (NSUInteger) anIndex | 获取从开头到anIndex-1位置的字符串 | - (NSString *) substringFromIndex: (NSUInteger) anIndex | 获取从anIndex到结尾的字符串 | - (NSString *) substringWithRange: (NSRange) aRange | 获取aRange指定范围的字符串 | NSRange的说明 | typedef struct _NSRange { NSUInteger location; // 开头 NSUInteger length; //长度} NSRange; | | | |
(7) 搜索与置换 | - (NSRange) rangeOfString: (NSString *) aString | 搜索指定字符串在受体内的位置 不存在的话返回的location是NSNotFound, length为0 忽视大小写等用 rangeOfString:options: | 搜索时支持正规表现, option: NSRegularExperssionSearch | [str rangeOfString: @"[0-9]{3}+-[0-9]{4}" option: NSRegularExpressionSearch]; | - (NSRange) lineRangeForRange: (NSRange) aRange | 指定行与位置,返回实际在字符串里的位置 @"第1行\n第2行\n第3行\n第4行\n"这样的 代表行的结尾的字符 \r或0x0d | CR, Mac OS的行末 | \n或0x0a | LF, Unix类的行末 | \r\n | CRLF, Windows的行末 | U+2028 | Unicode的行末 | U+2019 | Unicode的段落结尾 | | | | - (NSString *) stringByReplacingCharactersInRange: (NSRange) range withString: (NSString *) replacement | 指定范围的字符用replacement来代替 | - (NSString *) stringByReplacingOccurencesOfString: (NSString *) target withString: (NSString *) replacement | 用replacement替代所有的target | | | | | | | | | | | | | |
(8) 大小写 | - (NSString *) lowercaseString | 全大写 | - (NSString *) uppercaseString | 全小写 | - (NSString *) capitalizedString | 首字母大写,其他小写 | | | |
(9) 数值的转换 | doubleValue floatValue intValue integerValue boolValue 以Y, y, T, t开头或开头是非零数字(001, 1, 010都算非零数字)的返回YES |
(10) 路径的操作 | 位置 Foundation/NSPathUtilities.h 参照根路径 NSHomeDirectory() 例: /github/mySample/math.m - (NSString *) lastPathComponent | 获取最后一个路径元素 例子里的math.m | - (NSString *) stringByAppendingPathComponent: (NSString *) aStr | 在最后添加指定的路径元素 | - (NSString *) stringByDeletingLastPathComponent | 删除最后一个路径元素 如果删除后是根路径,删除多余的'/' | - (NSString *) pathExtension | 获取文件后缀,没有后缀的返回空字符串 例里的"m" | - (NSString *) stringByAppendingPathExtension: (NSString *) aStr | 在最后增加文加后缀 不要'.', 自动添加 | - (NSString *) stringByDeletingPathExtension | 删除后缀与'.' 没有后缀的不改动 | - (BOOL) isAbsolutePath | 如果是绝对路径返回YES | + (NSString *) pathWithComponents: (NSArray *) components | 以数组元素来创建路径 要绝对路径的话第一个元素 @"\" 末尾加\的话最后一个元素 @"" | - (NSArray *) pathComponents | 把路径分解成路径元素的数组 绝对路径第一个 @"\" 最后带\的最后一个@"" | - (NSString *) stringByExpandingTildeInPath | 开头是~/...或者~name/...的,把第一个/前换成根路径 不是的不变 | - (NSString *) stringByAbbreviatingWithTildeInPath | 开头是根路径的换成~ | - (__strong const char *) fileSystemRepresentation 放入aStr内: - (BOOL) getFileSystemRepresentation:maxLength: | 用文件系统使用的字码来转换成C字符串 | | | | | | | |
(11) 文件的输入输出 | # TODO: Supply [s18 NSError] - (id) initWithContentsOfFile: (NSString *) path encoding: (NSStringEncoding) enc error: (NSError **)error 便利的构造函数: stringWithContentsOfFile:encoding:error: | 从指定的path以enc字码读取文件并写入受体 如果无法读取, 释放受体返回nil, error指向详细信息 | - (id) initWithContentsOfFile: (NSString *) path usedEncoding: (NSStringEncoding) enc error: (NSError **) error | 和上一个一样,但是字码自动判定并且放入enc里 | - (BOOL) writeToFile: (NSString *) path atomically: (BOOL) useAuxiliaryFile encoding: (NSStringEncoding) enc error: (NSError **) error | 把受体按enc转码写入path指定的文件里, 成功返回YES atomically为YES的话,写在临时文件写入,成功后重命名为原文件, 不损坏原文件 失败的话返回NO, error指向错误详细信息 | | | | | | | | | | | | | | | |
(12) 其他 | - (id) init 便利的构造函数: string | 生成空字符串 用在NSMutableString才有实际意义(因为NSString一旦生成不能改变) | - (id) initWithString: (NSString *) aString | 根据aString生成字符串 参数也可以是NSMutableString的实例, 可变生成不变 | - (NSString *) description | NSObject处定义 NSString处为返回self, 也就是自己的字符串 | - (id) propertyList | # TODO: Supply [s13-3 propertyList] | - (NSArray *) componentsSeparatedByCharactersInSet: (NSCharacterSet *) sep | 以sep指定的字符集合内部的字符为分割符分割字符串并返回数组 | | | | | | | | | | | |
| |
| |
| |
| |
| |