Swift3.0語言教程比較、判斷字符串,在一個程序中字符串不少時,經常會作的操做就是對這些字符串進行比較和判斷。本小節將講解這些內容。編程
1.不區分大小寫比較編碼
字符串比較能夠分爲:不區分大小寫比較、區分大小寫比較以及本地化比較三部分。首先咱們來看不區分大小寫比較,不區分大小寫比較顧名思義就是不區分字符串中字母的大小寫,即A和a相同。在NSString中使用caseInsensitiveCompare(_:)方法實現這一功能,其語法形式以下:spa
func caseInsensitiveCompare(_ string: String) -> ComparisonResult.net
其中,string用來指定一個比較的字符串。該方法的返回值爲ComparisonResult類型。ComparisonResult是一個枚舉類型,包含了如下3個成員:blog
q orderedAscending(-1):左操做數小於右操做數。教程
q orderedSame(0):兩個操做數相等。字符串
q orderedDescending(1):左操做數大於右操做數。get
【示例1-29】如下將使用caseInsensitiveCompare(_:)方法對字符串進行比較。string
import Foundationit
var a=NSString(string:"Hello")
var b=NSString(string:"hello")
var c=NSString(string:"Swift")
//比較字符串
print(a.caseInsensitiveCompare(b as String).rawValue)
print(a.caseInsensitiveCompare(c as String).rawValue)
print(c.caseInsensitiveCompare(a as String).rawValue)
運行結果以下:
0
-1
1
2.區分大小寫比較
有不區分大小寫比較,相對的就有區分大小寫比較。在NSString中提供了4種方法實現了這種比較,分別爲compare(_:)、compare(_:options:)、compare(_:options:range:)和compare(_:options:range:locale:)方法。
(1)compare(_:)方法就是用來比較字符串的,它須要區分字符串的大小寫,其語法形式以下:
func compare(_ string: String) -> ComparisonResult
其中,string用來指定一個比較的字符串。
【示例1-30】如下將使用compare(_:)方法實現字符串的比較。
import Foundation
var a=NSString(string:"Hello")
var b=NSString(string:"hello")
var c=NSString(string:"Hello")
//比較字符串
print(a.compare(b as String).rawValue)
print(a.compare(c as String).rawValue)
print(b.compare(a as String).rawValue)
運行結果以下:
-1
0
1
(2)compare(_:options:)方法和compare(_:)方法實現的功能相似,它是對字符串進行比較,可是它比compare(_:)方法多了一個mask參數。該參數能夠用來指定一個選項標記(這個標記能夠做爲字符串比較的條件)。在編程中,mask參數最常被設置爲如下5種:
q caseInsensitive:不區分大小寫比較
q literal:區分大小寫比較
q backwards:從字符串末尾開始搜索
q anchored:搜索限制範圍的字符串
q numeric:按照字符串裏的數字爲依據,算出順序。例如 Foo2.txt < Foo7.txt < Foo25.txt
compare(_:options:)方法的語法形式以下:
func compare(_ string: String, options mask: NSString.CompareOptions = []) -> ComparisonResul
【示例1-31】如下將使用compare(_:options:)方法實現對字符串的比較。
import Foundation
var a=NSString(string:"Hello")
var b=NSString(string:"hello")
print(a.compare(b as String, options: NSString.CompareOptions.caseInsensitive).rawValue) //比較字符串
運行結果以下:
0
(3)compare(_:options:range:)方法和compare(_:options:)方法的功能相似,可是它比compare(_:options:)方法多了一個rangeOfReceiverToCompare參數,此參數能夠用來對比較範圍進行設置。其語法形式以下:
func compare(_ string: String, options mask: NSString.CompareOptions = [], range rangeOfReceiverToCompare: NSRange) -> ComparisonResult
【示例1-32】如下將使用compare(_:options:range:)方法對字符串進行比較。
import Foundation
var a=NSString(string:"HEllo")
var b=NSString(string:"Swift")
print(a.compare(b as String, options: NSString.CompareOptions.caseInsensitive,range: NSMakeRange(1, 3)).rawValue) //比較字符串
運行結果以下:
-1
(4)compare(_:options:range:locale:)方法和compare(_:options:range:)方法的功能相似,可是它比compare(_:options:range:)方法多了一個locale參數,此參數能夠用來設置語言環境。其語法形式以下:
func compare(_ string: String, options mask: NSString.CompareOptions = [], range rangeOfReceiverToCompare: NSRange, locale: AnyObject?) -> ComparisonResult
【示例1-33】如下將使用compare(_:options:range:locale:)方法對字符串進行比較。
import Foundation
var a=NSString(string:"a")
var b=NSString(string:"ä")
var l=Locale.current
print(a.compare(b as String, options: NSString.CompareOptions.caseInsensitive, range: NSMakeRange(0, 1), locale: l).rawValue)
運行結果以下:
-1
3.本地化比較
對於本地化比較在NSString中提供了3種方法,分別爲:localizedCaseInsensitiveCompare(_:)、localizedStandardCompare(_:)和localizedCompare(_:)。
(1)localizedCaseInsensitiveCompare(_:)方法爲不區分大小寫、本地化比較字符串,其語法形式以下:
func localizedCompare(_ string: String) -> ComparisonResult
其中,string用來指定一個比較的字符串。
【示例1-34】如下將使用localizedCaseInsensitiveCompare(_:)方法比較字符串。
import Foundation
var a=NSString(string:"Hello")
var b=NSString(string:"hello")
var c=NSString(string:"Swift")
//比較字符串
print(a.localizedCaseInsensitiveCompare(b as String).rawValue)
print(a.localizedCaseInsensitiveCompare(c as String).rawValue)
print(c.localizedCaseInsensitiveCompare(a as String).rawValue)
運行結果以下:
0
-1
1
(2)localizedStandardCompare(_:)方法爲本地化標準字符串的比較,其語法形式以下:
func localizedStandardCompare(_ string: String) -> ComparisonResult
其中,string用來指定一個比較的字符串。
【示例1-35】如下將使用localizedStandardCompare(_:)方法實現字符串的比較。
import Foundation
var a=NSString(string:"Hello")
var b=NSString(string:"hello")
print(a.localizedStandardCompare(b as String).rawValue) //比較字符串
運行結果以下:
1
(3)localizedCompare(_:)方法是區分大小寫、本地化比較字符串,其語法形式以下:
func localizedCompare(_ string: String) -> ComparisonResult
其中,string用來指定一個比較的字符串。
【示例1-36】如下將使用localizedCompare(_:)方法實現對字符串的比較。
import Foundation
var a=NSString(string:"Hello")
var b=NSString(string:"hello")
var c=NSString(string:"Hello")
print(a.localizedCompare(b as String).rawValue)
print(a.localizedCompare(c as String).rawValue)
print(b.localizedCompare(a as String).rawValue)
運行結果以下:
1
0
-1
4.判斷字符串
在NSString中提供了3種對字符串判斷的方法,分別爲hasPrefix(_:)、hasSuffix(_:)和isEqual(to:)方法。
(1)hasPrefix(_:)方法用來判斷字符串是否以某一指定字符串開頭,其語法形式以下:
func hasPrefix(_ str: String) -> Bool
其中,str用來指定一個字符串。
【示例1-37】如下將判斷字符串a是否以"H"、"Hel"和"Hele"開頭。
import Foundation
var a=NSString(string:"Hello")
//判斷字符串a是否以"H"開頭
if(a.hasPrefix("H")){
print("a字符串是以H開頭的")
}else{
print("a字符串不是以H開頭的")
}
//判斷字符串a是否以"Hel"開頭
if(a.hasPrefix("Hel")){
print("a字符串是以Hel開頭的")
}else{
print("a字符串不是以Hel開頭的")
}
//判斷字符串a是否以"Hele"開頭
if(a.hasPrefix("Hele")){
print("a字符串是以Hele開頭的")
}else{
print("a字符串不是以Hele開頭的")
}
運行結果以下:
a字符串是以H開頭的
a字符串是以Hel開頭的
a字符串不是以Hele開頭的
(2)hasSuffix(_:)方法正好和hasPrefix(_:)方法相反,它是用來判斷字符串是否以某一指定字符串結尾的,其語法形式以下:
func hasSuffix(_ str: String) -> Bool
其中,str用來指定一個字符串。
【示例1-38】如下將判斷字符串a是否以"o"、"Hello"、"allo"結尾。
import Foundation
var a=NSString(string:"Hello")
//判斷字符串a是否以"o"結尾。
if(a.hasSuffix("o")){
print("a字符串是以o結尾的")
}else{
print("a字符串不是以o結尾的")
}
//判斷字符串a是否以"Hello"結尾。
if(a.hasSuffix("Hello")){
print("a字符串是以Hello結尾的")
}else{
print("a字符串不是以Hello結尾的")
}
//判斷字符串a是否以"allo"結尾。
if(a.hasSuffix("allo")){
print("a字符串是以allo結尾的")
}else{
print("a字符串不是以allo結尾的")
}
運行結果以下:
a字符串是以o結尾的
a字符串是以Hello結尾的
a字符串不是以allo結尾的
(3)isEqual(to:)方法是用來判斷字符串是否相等的,其語法形式以下:
func isEqual(to aString: String) -> Bool
其中,aString用來指定字符串。
【示例1-39】如下將判斷字符串是否相等。
import Foundation
var a=NSString(string:"Hello")
var b=NSString(string:"hello")
var c=NSString(string:"Swift")
var d=NSString(string:"Hello")
//判斷字符串a和b是否相等
if(a.isEqual(to: b as String)){
print("a、b兩個字符串相等")
}else{
print("a、b兩個字符串不相等")
}
//判斷字符串a和c是否相等
if(a.isEqual(to: c as String)){
print("a、c兩個字符串相等")
}else{
print("a、c兩個字符串不相等")
}
//判斷字符串a和d是否相等
if(a.isEqual(to: d as String)){
print("a、d兩個字符串相等")
}else{
print("a、d兩個字符串不相等")
}
運行結果以下:
a、b兩個字符串不相等
a、c兩個字符串不相等
a、d兩個字符串相等