NSString 与 Unicode (苹果API 跟你开的一点小玩笑)
来源:互联网 发布:qq群优化排名 编辑:程序博客网 时间:2024/04/29 22:06
NSString是大家最常用的一个类,几乎人人都脱离不开,它的功能非常强大,但是它其中有点奥秘直到碰到了才发现。
正文:
NSString的API中有一个rangeOfString:,这个也是大家常用的在字符串中查找的的Api。我一般图省事,都是用这个,很少用rangeOfString:option:
正是因为偷懒,才导致了我一个crash,真是记忆深刻。
下面,我先举一个例子:
明明有一个":",结果就是找不到.这样导致了我以后代码出现的crash。这次不是说这个crash,而是要找到原因,为啥这个":",找不到呢。
打印一下length,竟然是2。那为啥找不到呢.换一种方式:
找到了!!!!!
问题解决了,但是为啥会这样呢?
这个就得看看Unicode的构成了。
Unicode对于组成有两种形式:合成形式与分解形式。
而NSString的rangeOfString,这个api对此的支持是这样的。rangeOfString,默认不是按照码元来查找的,也就是不是按照literalSearch.虽然它里面包含":",但是,这两个字符可以合成另一个与其等价的字符,所以就找不到了。
合成字符有的在Unicode字符表中有对应的形式,有的没有。我举得例子就没有。这得根据各种字符的具体规则定义,比如字符+西里尔字母,就能组出很多种奇怪的字符。
提醒:
如果要在NSString查找字符,一定要带上option。因为NSString与Unicode还是有很多坑的。
最后,推荐几篇写的比较好的文章,介绍NSString与Unicode的。
http://objccn.io/issue-9-1/
http://blog.swanspace.org/ramble_unicode/
- NSString 与 Unicode (苹果API 跟你开的一点小玩笑)
- NSString 与 Unicode (苹果API 跟你开的一点小玩笑)
- Unicode编码小玩笑
- [笔记点]今天HTMLBUTTON给我开的小玩笑
- NSString与Unicode
- NSString 与 Unicode
- UNICODE、DBCS的一点小知识
- UNICODE、DBCS的一点小知识
- UNICODE、DBCS的一点小知识
- 苹果开发的一点小总结(1)
- 饮水机与愚人节的玩笑
- (zT)美国的谷哥很幽默:跟中国政府开了个国际玩笑
- 一个灰常适合愚人节与朋友间玩笑的小恶意程序
- NSString 与 Unicode (字符查找)
- 谁跟我开了一个大玩笑
- 你喜欢嘎哦跟小的
- 你是我的小苹果
- 你是我的小雅小苹果
- 工作周报065
- MAT 工具的使用
- 第10周项目2二叉树遍历的递归算法
- 二叉树遍历的递归算法
- JPA实体继承的映射
- NSString 与 Unicode (苹果API 跟你开的一点小玩笑)
- 二叉树遍历的递归算法
- 集算器辅助SQL编写的应用结构
- 第十周 项目3-4返回二叉链b中data值为x的节点的层数
- 第九周项目2-对称矩阵压缩存储的实现与应用(2)
- 函数指针
- SQL SERVER 10048
- JPA实体继承实体的映射策略
- 第十周项目1---二叉树算法库