关于一种语言好不好用,你只需要衡量以下两种指标:
- API 的统一性
- String 类的实现质量
NSString
是基础类库中的佼佼者。在那个其他语言 仍在 艰难地正理处理 Unicode 的时代,NSString
是尤其让人印象深刻的。不仅仅是任何内容扔在它里面就能 正确工作 ,NSString
还能将字符串解析成语法标签、检测出内容中的首要语言,并且在任意你能想到的字符编码中转换。它好用得离谱。
它虽然很强大,但是不提提它的可无缝转换(toll-free bridged)的表兄弟 CFMutableString,或者更特殊的 CFStringTransform,是不负责任的。
正如它的 CF
前缀所表述的一样,CFStringTransform
是 Core Foundation 中的一部分。这个函数传入以下参数,并返回一个 Boolean
来表示转换是否成功:
-
string
: 需要转换的字符串。由于这个参数是CFMutableStringRef
类型,一个NSMutableString
类型也可以通过自由桥接的方式传入。 -
range
: 转换操作作用的范围。这个参数是CFRange
,而不是NSRange
。 -
transform
: 需要应用的变换。这个参数使用了包含下面将提到的字符串常量的 ICU transform string。 -
reverse
: 如有需要,是否返回反转过的变换。
CFStringTransform
中的 transform
参数涉及的内容很多。这里有个它能做什么的概述:
去掉重音和变音符
Énġlišh långuãge lẳcks iñterêßţing diaçrïtičş. 如此类的字符串,把扩展的拉丁字符集正则化为 ASCII 友好型的表示,它非常有用。用 kCFStringTransformStripCombiningMarks
变换来去掉任意字符串中弯弯扭扭的符号。
为 Unicode 字符命名
kCFStringTransformToUnicodeName
让你可以找出特殊字符的 Unicode 标准名,包括 Emoji。例如:"