NSString - rangeOfString问题找到双引号

时间:2017-11-07 01:08:50

标签: ios objective-c ios11 xcode9

这似乎是iOS 11或Xcode 9的错误,因为这在以前的版本中有效。我正在尝试解析一个长度为英尺和英寸的字符串,例如:37'6“。当我尝试使用命令找到英寸符号(双引号)时:

add(0)
Launch(0)

返回范围时,该位置为空指针,长度为0而不是长度为1的字符位置。还有其他人注意到这个吗?我不确定周围的工作是什么(除了让用户以英尺为单位输入小数)。

谢谢! 罗布

1 个答案:

答案 0 :(得分:1)

粗略的Google搜索显示iOS 11 includes a “Smart Quotes” feature that automatically turns your straight quotes into curly quotes。因此,您的字符串可能包含而不是",这就是您的搜索无法找到它的原因。

解决方案:制作一个包含NSCharacterSet"的{​​{1}}(因为后者是,你知道,实际上是正确的)英寸符号),然后使用ʺ搜索它,而不是-[NSString rangeOfCharacterFromSet:]。通过这种方式,您可以找到角色,无论其形式如何。

或者,通过将-[NSString rangeOfString:]属性设置为UITextField,似乎可以为个人UITextViewsmartQuotesType关闭“智能引号”。

(顺便说一下,你是否注意到这个答案中的所有撇号和引号都是非常卷曲的?那注意细节怎么样?呃?)