【问题标题】:Best way to sort an NSArray of custom objects by an alphanumerical property按字母数字属性对自定义对象的 NSArray 进行排序的最佳方法
【发布时间】:2015-02-27 08:45:38
【问题描述】:

正如我在标题中所说,我有一个 NSArray 对象,而这些对象又具有具有这种格式的 NSString 属性(我提供了一种正则表达式来解释):[1-9]+[A-Z] *

我想先按第一个数字字符,然后按最后一个字母字符对此类数组进行排序,例如:如果我有 6 个带有字符串 [@"1", @"1A", @" 的对象3", @"2D", @"10B", @"1B"],我想得到排序后的数组 [@"1", @"1A", @"1B", @"2D", @ "3", @"10B"].

由于我想按NSString 的属性进行排序,我该如何实现?

提前致谢

【问题讨论】:

  • 也许你会检查字符的 ASCII 值?
  • NSNumericSearch 怎么样比较:[array sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2){return [obj1 compare:obj2 options:NSNumericSearch];}];
  • @Larme 谢谢,但这似乎没有考虑到字母子串...
  • @Larme 抱歉,它正在工作,谢谢!

标签: ios sorting nsarray nspredicate nssortdescriptor


【解决方案1】:

有一种非常简单的方法可以做同样的事情:

NSArray *unsortedArray =  @[@"1", @"1A", @"3", @"2D", @"10B", @"1B"];
NSArray *sortedArray  = [unsortedArray sortedArrayUsingSelector:@selector(localizedStandardCompare:)];

NSLog(@"%@",sortedArray);

享受你的编码....:)

【讨论】:

  • 我实际上没有字符串数组,而是NSObject 数组我想按NSString 属性排序...另一方面,如果我只是对字符串进行排序,我在@“2D”之前得到@“10B”
  • 通过这种方法你会在@"2D"之后得到@"10B",这里是日志:(1, 1A, 1B, 2D, 3, 10B)
猜你喜欢
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 2011-01-24
  • 2012-02-12
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多