NSString - rangeOfString 问题查找双引号
NSString - rangeOfString issue finding a double quote
这似乎是 iOS 11 或 Xcode 9 的错误,因为这在以前的版本中有效。我正在尝试解析包含以英尺和英寸为单位的长度的字符串,例如:37' 6"。当我尝试使用以下命令查找英寸符号(双引号)时:
NSRange inchesrange = [lineOfData rangeOfString:@"\""];
返回的范围带有位置的空指针和长度 0,而不是长度为 1 的字符位置。有没有其他人注意到这一点?我不确定解决方法是什么(除了让用户输入以英尺为单位的长度的小数点)。
谢谢!
罗布
粗略 Google 搜索显示 iOS 11 includes a “Smart Quotes” feature that automatically turns your straight quotes into curly quotes。所以您的字符串可能包含 “
或 ”
而不是 "
,这就是您的搜索找不到它的原因。
解决方案:创建一个包含 "
、“
、”
和 ʺ
的 NSCharacterSet
(因为后者是,你知道的,实际正确的英寸符号),然后使用 -[NSString rangeOfCharacterFromSet:]
搜索它,而不是 -[NSString rangeOfString:]
。这样无论是什么形态的角色都能找到。
或者,似乎可以通过将 smartQuotesType
属性 设置为 [=23] 来为个人 UITextField
或 UITextView
关闭“弯引号” =].
(顺便说一句,你注意到我在这个答案中的所有撇号和引号都是非常卷曲的吗?对细节的关注怎么样,嗯?)
这似乎是 iOS 11 或 Xcode 9 的错误,因为这在以前的版本中有效。我正在尝试解析包含以英尺和英寸为单位的长度的字符串,例如:37' 6"。当我尝试使用以下命令查找英寸符号(双引号)时:
NSRange inchesrange = [lineOfData rangeOfString:@"\""];
返回的范围带有位置的空指针和长度 0,而不是长度为 1 的字符位置。有没有其他人注意到这一点?我不确定解决方法是什么(除了让用户输入以英尺为单位的长度的小数点)。
谢谢! 罗布
粗略 Google 搜索显示 iOS 11 includes a “Smart Quotes” feature that automatically turns your straight quotes into curly quotes。所以您的字符串可能包含 “
或 ”
而不是 "
,这就是您的搜索找不到它的原因。
解决方案:创建一个包含 "
、“
、”
和 ʺ
的 NSCharacterSet
(因为后者是,你知道的,实际正确的英寸符号),然后使用 -[NSString rangeOfCharacterFromSet:]
搜索它,而不是 -[NSString rangeOfString:]
。这样无论是什么形态的角色都能找到。
或者,似乎可以通过将 smartQuotesType
属性 设置为 [=23] 来为个人 UITextField
或 UITextView
关闭“弯引号” =].
(顺便说一句,你注意到我在这个答案中的所有撇号和引号都是非常卷曲的吗?对细节的关注怎么样,嗯?)