下面的代码用于排序字符串数组,如果它们都是小写或全部大写但我想在排序时忽略大小写。我怎么能这样做?以下是自定义类的数组。
<!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">▼</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">▼</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>
答案 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
})