【问题标题】:Sort NSArray with capital letters使用大写字母对 NSArray 进行排序
【发布时间】:2013-02-01 23:30:57
【问题描述】:

我有一个看起来像这样的NSArray

contactNamesArray = [[NSMutableArray alloc] initWithObjects:@"John Galt", @"Michael Wales", @"James Joyce", @"Shakespeare", nil];

据此,我想创建一个具有所有相同值NSArray,但看起来像这样:

newContactNamesArray = [[NSMutableArray alloc] initWithObjects:@"john galt", @"michael wales", @"james joyce", @"shakespeare", nil];

我想这样做是因为我想在第二个数组中进行搜索,并且我想用普通字母替换其中的 每个大写字母

你如何在 Objective-C 中做这样的事情?提前致谢!

【问题讨论】:

    标签: iphone ios objective-c cocoa-touch nsarray


    【解决方案1】:

    您可以遍历一个数组,并通过调用将每个元素转换为小写

    [element lowercaseString]
    

    就可以了。但是,这对于实现不区分大小写的搜索来说非常不理想:更好的方法是保持字符串原样,并改用 caseInsensitiveCompare 方法进行搜索。

    【讨论】:

    • 第二个选项更好!我试试看,谢谢!
    【解决方案2】:

    你为什么要复制?您可以以不区分大小写的方式对 NSArray 进行排序:

    NSArray *sortedContactNamesArray = [contactNamesArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
    

    另外,请记住,sortedArrayUsingSelector 返回一个数组,其中包含对原始项目的引用,而不是它们的副本。

    【讨论】:

    • 谢谢,这是一个很好的方法!
    • 奇怪的是,我得到了一个 NSArray,其 NSStrings 与旧数组中的相同。
    • @SergiusGee 这没什么好奇怪的。排序不会改变值。这种方法表明在确定排序顺序时应该忽略大小写。但实际上并没有改变任何值。
    猜你喜欢
    • 2010-11-23
    • 2018-03-16
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2018-05-04
    • 2014-11-04
    相关资源
    最近更新 更多