NSString与Unicode

NSString的API中有两个方法:

  • (1)、rangeOfString:
  • (2)、rangeOfString:option:

举个例子:
NSString与Unicode_第1张图片

字符串中有一个”:”结果就是找不到,这样就导致了代码的crash。然后看如下:
这里写图片描述

打印一下length,竟然是2。那为啥找不到呢.换一种方式:

这里写图片描述

Unicode对于组成有两种形式:合成形式与分解形式。

而NSString的rangeOfString,这个api对此的支持是这样的。rangeOfString,默认不是按照码元来查找的,也就是不是按照literalSearch.虽然它里面包含”:”,但是,这两个字符可以合成另一个与其等价的字符,所以就找不到了。

合成字符有的在Unicode字符表中有对应的形式,有的没有。我举得例子就没有。这得根据各种字符的具体规则定义,比如字符+西里尔字母,就能组出很多种奇怪的字符。

提醒:
如果要在NSString查找字符,一定要带上option。因为NSString与Unicode还是有很多坑的。

你可能感兴趣的:(NSString与Unicode)