NSString 与 Unicode (字符查找)
来源:互联网 发布:网络语2333 编辑:程序博客网 时间:2024/04/28 14:59
2015-10-10 09:11 编辑: suiling 分类:iOS开发 来源:yinzezhang投稿
前言:
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 (字符查找)
- NSString与Unicode
- NSString 与 Unicode
- iOS NSString 查找字符…
- Unicode 与 字符编码
- 字符与UNICODE编码
- 宽字符与Unicode
- 字符与Unicode互转
- 宽字符与Unicode
- unicode字符与ansi字符
- NSString & Unicode
- NSString & Unicode
- ios--NSString查找字符的位置及字符长度(笔记)
- Unicode 与 UTF 字符标准
- DBCS ,宽字符与unicode
- Unicode与ANSI字符转换
- unicode与ansi字符详解
- NSString 与UTF8 的字符转换
- Qt学习之路【5】:静态Qt库下SQLite数据库无法加载驱动(QSQLITE driver not loaded)
- 跳过那些坑,创业者必备的产品开发知识
- 学习C++要点
- Activity和Fragment之间的传值
- MongoDB 性能优化五个简单步骤
- NSString 与 Unicode (字符查找)
- 网页中字体的大小和样式之类的问题
- c语言和java的区别
- 千万别理程序员
- 常用的git命令
- IOS 实现UI状态保持和恢复
- 开始写点东西
- dhtmlx技术使用总结与介绍中文手册
- 第一个博客记录开始