对String数组进行排序并忽略大小写

时间:2015-09-06 00:32:06

标签: ios swift

下面的代码用于排序字符串数组,如果它们都是小写或全部大写但我想在排序时忽略大小写。我怎么能这样做?以下是自定义类的数组。

<!DOCTYPE html> <html> <div class="whole"> <head> <link href="http://s3.amazonaws.com/codecademy-content/courses/ltp/css/shift.css" rel="stylesheet"> <link rel="stylesheet" href="http://s3.amazonaws.com/codecademy-content/courses/ltp/css/bootstrap.css"> <link rel="stylesheet" href="main.css"> </head> <body> <div class="menu-wrap"> <nav class="menu"> <ul class="clearfix"> <li><a href="#">Home</a></li> <li><a href="#">About Us</a></li> <li><a href="#"> Contact Us</a></li> <li> <a href="#">Destinations <span class="arrow">&#9660;</span></a> <ul class="sub-menu"> <li><a href="#">Airlines</a></li> <li><a href="#">Hotels</a></li> </ul> </li> <li><a href="#">Cruiselines</a></li> <li><a href="#">Weddings & Honeymoons</a></li> <li> <a href="#">Useful Information <span class="arrow">&#9660;</span></a> <ul class="sub-menu"> <li><a href="#">Travel Insurance</a></li> </ul> </li> <li><a href="#">Careers</a></li> </ul> </nav> </div> <center> <h2></h2> <p></p> <h1></h1> <div class="row"> <div class="col-md-4"> <div class="Thumbnail"> <img src=""> </div> </div> <div class="col-md-4"> <div class="Thumbnail"> <img src=""> </div> </div> <div class="col-md-4"> <div class="Thumbnail"> <image src=""> </div> </div> </div> </center> <center> <div class="learn-more"> <div class="container"> <div class="row"> <div class="col-md-4"> <h3></h3> <p></p> <p><a href="#"></a></p> </div> <div class ="col-md-4"> <h3></h3> <p>.</p> <p><a href="#"></a></p> </div> <div class ="col-md-4"> <h3></h3> <p></p> <p><a href="#"></a></p> </div> </div> </div> </center> </div> <div class="socialmedia"> <nav class="menu"> <ul class="clearfix"> </ul> </nav> </div> <center> <h2></h2> <h2></h2> <h2></h2> </center> <h2></h2> <h2></h2> <div class="socialmedia"> <nav class="menu"> <ul class="clearfix"> <div class="allrights"> <center><li><p>Travel Away Corporation All Rights Reserved 2015</p></li></center> </ul> </div> </nav> </div> </div> </body> </html>

5 个答案:

答案 0 :(得分:35)

您可以使用String方法localizedCompare()

更新: Xcode 8.2•Swift 3.0.2

let array = ["def","Ghi","Abc" ]

let sorted1 = array.sorted{$0.compare($1) == .orderedAscending}
print(sorted1)  // ["Abc", "Ghi", "def"]

let sorted2 = array.sorted{$0.localizedCompare($1) == .orderedAscending}
print(sorted2) // ["Abc", "def", "Ghi"]


// you can also use the String compare options parameter to give you more control when comparing your strings
let sorted3 = array.sorted{$0.compare($1, options: .caseInsensitive) == .orderedAscending }
print(sorted3)   // ["Abc", "def", "Ghi"]\n"

// which can be simplifyed using the string method caseInsensitiveCompare
let sorted4 = array.sorted{$0.caseInsensitiveCompare($1) == .orderedAscending}
print(sorted4) // ["Abc", "def", "Ghi"]\n"

// or localized caseInsensitiveCompare
let array5 = ["Cafe B","Café C","Café A"]
let sorted5 = array5.sorted{$0.localizedCaseInsensitiveCompare($1) == .orderedAscending}
print(sorted5) // "["Café A", "Cafe B", "Café C"]\n"

答案 1 :(得分:10)

您可以将String转换为小写,然后进行比较:

array.sort{ $0.lowercaseString < $1.lowercaseString }

答案 2 :(得分:1)

以下an answer about overriding compareTo in Java更改sort命令的方式。如果将字符串转换为大写,然后比较它们会发生什么?

答案 3 :(得分:1)

这是应该使用的方法,用于此目的:

public func caseInsensitiveCompare(aString: String) -> NSComparisonResult

在你的情况下:

resultListArray.sort({ $0.fileName.caseInsensitiveCompare($1.fileName) == NSComparisonResult.OrderedAscending })

答案 4 :(得分:0)

var items = ["a","A","b","B","c","C","d","D"] 
items = items.sorted(by: { (item1, item2) -> Bool in
     return item1.localizedCompare(item2) == .orderedAscending
})