【问题标题】:NSCaseInsensitiveSearch not works in rangeOfCharacterFromSetNSCaseInsensitiveSearch 在 rangeOfCharacterFromSet 中不起作用
【发布时间】:2014-03-14 13:18:02
【问题描述】:

NSCaseInsensitiveSearch 似乎不适用于NSString:rangeOfCharacterFromSet。有人可以解释为什么吗?这是正确的行为吗?

NSString *string = @"James Bond Always Rocks";    
NSRange range = [string rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"J"] options:NSCaseInsensitiveSearch];
NSLog(@"range->%@",NSStringFromRange(range)); //This prints range->{0, 1}

NSString *string = @"James Bond Always Rocks";    
NSRange range = [string rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"j"] options:NSCaseInsensitiveSearch];
NSLog(@"range->%@",NSStringFromRange(range)); //This prints range->{2147483647, 0}

【问题讨论】:

  • 请注意,您可以轻松创建一个字符集,其中包含要搜索的字符的大小写变体。

标签: objective-c cocoa nsstring nscharacterset


【解决方案1】:

来自文档:“选项:指定搜索选项的掩码。可以通过将它们与 C 按位​​ OR 运算符组合来指定以下选项:NSAnchoredSearch、NSBackwardsSearch。”所以这似乎是一个正确的行为,不知道为什么只有这两个选项可以应用。

【讨论】:

  • 这很有意义(对我来说)。 NSCharacterSet 使用位图来表示集合中的字符,因此成员资格测试快速。不区分大小写的成员资格测试会破坏该目的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-02
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
  • 2015-03-31
相关资源
最近更新 更多