4.1字符 1.格式: 變量關(guān)鍵字和常量關(guān)鍵字 變量 : Character = 字符值。 注意點(diǎn):字符值 必須用雙引號(hào)括起來, 必須是一個(gè)字符。 例: var ch :Character = “c”// 字符值 必須用雙引號(hào),并且是一個(gè)字符 PRintln(“ch=(ch)”) 運(yùn)行結(jié)果 ch=c 2.字符串和字符的關(guān)系: 字符串是由N個(gè)字符組成的,即字符串是字符的集合。 例: var str = “ABC”//字符串 “ABC” 是有 三個(gè)字符組成的分別是 :字符”A”,字符“B”,字符”C” 4.2創(chuàng)建字符串 1.Swift支持String字符串類型和Charater字符類型來提供一個(gè)快速的、支持Unicode編碼的方式來處理字符操作。 Swift的String類型和Objective-C的NSString無縫接合,所有NSString的API對(duì)String同樣適用。但是String變量總是可變長(zhǎng)的,而在Objective-C中變長(zhǎng)字符串是NSMutableString。 2.Swift字符串是傳值類型,在傳入函數(shù)參數(shù)或者賦值時(shí),它是新建一個(gè)原來字符串的拷貝,而不是分配一個(gè)指針,新建字符串和原來的字符串并不儲(chǔ)存在同一個(gè)空間。區(qū)別于Objective-C中NSString,后者是傳址類型,即相當(dāng)于一個(gè)指針。 Character字符類型同樣用雙引號(hào)把字符括起來,每一個(gè)字符代表一個(gè)獨(dú)立的Unicode字符,字符串相當(dāng)于Character的一個(gè)集合。 字符串和字符之間可以兩兩連接,使用最簡(jiǎn)單的運(yùn)算符 +,+=同樣適用。 3.創(chuàng)建空字符串 /定義一個(gè)空字符串第一種方法: var str1=”“定義一個(gè)空字符串 第二種方法: var str2 = String() 運(yùn)行結(jié)果 str1= str2= 4.判斷字符串是否為空 (isEmpty) 判斷字符串是否為空: var str3:String = “”if str3.isEmpty { //isEmpty是字符串的一個(gè)屬性,判斷字符串是否為空 println(“str3的值是空”) } else{ println(“str3的值不為空”) }
運(yùn)行結(jié)果 str3的值是空 5.字符串的轉(zhuǎn)義符 /0 空字符 / 反斜杠/ t 制表符/n 換行符/r 回車符 /” 雙引號(hào)/’ 單引號(hào) 例: 換行符: var strA = “Hello World /n 1”// /n是換行符 println(“strA=(strA)”) 引號(hào): var strB = “/”雙引號(hào)”// /” 是代表雙引號(hào) println(“strB=(strB)”) 單引號(hào): var strC = “/’單引號(hào)”// /’ 代表單引號(hào) println(“strC=(strC)”) 運(yùn)行結(jié)果 strA=Hello World 1 strB=”雙引號(hào) strC=’單引號(hào) 4.3字符串拼接 1.字符和字符串拼接,用+直接來拼接,組成新的字符串 (和字符串拼接用法一直) 例:import Foundation var C:Character = “S”//定義C 是字符變量var str = C + ” hello” println(str ) 運(yùn)行結(jié)果 S hello 2.字符串變量和常量用+或 +=來拼接 組成新的字符串 例: 多個(gè)字符串變量拼接 用 + 來拼接 var str4 = “hello” var str5 = ” swift” var str6 = str4+str5 //字符串變量拼接 println(“str6=(str6)”) 字符串變量和常量用+或 +=來拼接 var str7=”hello ” str7 += “swift”//字符串變量和字符常量拼接可以用+= 拼接 println(“str7=(str7)”) 運(yùn)行結(jié)果 str6=hello swift str7=hello swift 4.字符串和占位變量 組成新的字符串 var a = 3//定義一個(gè)整形變量 var strQ = “a = (a)”// 字符串和占外變量,組成新的變量(占外變量表示(變量)) println(“(strQ)”) 運(yùn)行結(jié)果 a = 3 4.4字符串插入、刪除和替換 1.對(duì)應(yīng)可變字符串可以插入、刪除和替換,String提供了幾個(gè)方法可以幫助實(shí)現(xiàn)這些操作。這些方法如下: splice(_:atIndex:)。在索引位置插入字符串。 insert(_:atIndex:)。在索引位置插入字符。 removeAtIndex(_:)。在索引位置刪除字符。 removeRange(_:)。刪除指定范圍內(nèi)的字符串。 replaceRange(_:,with: String) 。使用字符串或字符替換指定范圍內(nèi)的字符串。 代碼: var str =”Swift” print(“原始字符串:(str)”) str.splice(“Objective-Cand “.characters, atIndex: str.startIndex) str.insert(“.”,atIndex: str.endIndex) str.removeAtIndex(str.endIndex.predecessor()) var startIndex =str.startIndex var range =startIndex…endIndex str.removeRange(range) startIndex =str.startIndex str.replaceRange(range,with: “C++”) print(“替換范圍后:(str)”) 輸出結(jié)果: 原始字符串:Swift 插入字符串后:Objective-C and Swift 插入.字符后:Objective-Cand Swift. 刪除.字符后:Objective-Cand Swift 刪除范圍后:C and Swift 替換范圍后:C++ and Swift 4.5字符串比較 1.字符串比較:OC: NSString *str1 = @”abc”; NSString *str2 = @”abc”; if ([str1 compare:str2] == NSOrderedSame) else { NSLog(@”不相等”); } { NSLog(@”相等”); } else { NSLog(@”不相等”); } Swift:(== / != / >= / <=), 和C語(yǔ)言的strcmp一樣是逐個(gè)比較 var str4 = “abc”; var str5 = “abc”; if str4 == str5 { print(“相等”); } else { print(“不相等”); } var str6 = “abd”; var str7 = “abc”; else { print(“不大于等于”); } 4.6大小和相等比較 字符串比較可以分為:不區(qū)分大小寫比較、區(qū)分大小寫比較以及本地化比較三部分。首先我們來看不區(qū)分大小寫比較,不區(qū)分大小寫比較顧名思義就是不區(qū)分字符串中字母的大小寫,即A和a相同。 1.不區(qū)分大小寫比較 在NSString中使用caseInsensitiveCompare(_:)方法實(shí)現(xiàn)這一功能,其語(yǔ)法形式如下: func caseInsensitiveCompare(_ string: String) -> ComparisonResult 其中,string用來指定一個(gè)比較的字符串。該方法的返回值為ComparisonResult類型 。ComparisonResult是一個(gè)枚舉類型,包含了以下3個(gè)成員: q orderedAscending(-1):左操作數(shù)小于右操作數(shù)。 q orderedSame(0):兩個(gè)操作數(shù)相等。 q orderedDescending(1):左操作數(shù)大于右操作數(shù)。 2.區(qū)分大小寫比較 有不區(qū)分大小寫比較,相對(duì)的就有區(qū)分大小寫比較。在NSString中提供了4種方法實(shí)現(xiàn)了這種比較, 分別為:compare(:)、compare(:options:)、compare(:options:range:)和compare(:options:range:locale:)方法。 (1)compare(_:)方法就是用來比較字符串的,它需要區(qū)分字符串的大小寫,其語(yǔ)法形式如下: func compare(_ string: String) -> ComparisonResult 其中,string用來指定一個(gè)比較的字符串。 compare(:options:)方法和compare(:)方法實(shí)現(xiàn)的功能類似,它是對(duì)字符串進(jìn)行比較,但是它比compare(_:)方法多了一個(gè)mask參數(shù)。該參數(shù)可以用來指定一個(gè)選項(xiàng)標(biāo)記(這個(gè)標(biāo)記可以作為字符串比較的條件)。 在編程中,mask參數(shù)最常被設(shè)置為以下5種: q caseInsensitive:不區(qū)分大小寫比較 q literal:區(qū)分大小寫比較 q backwards:從字符串末尾開始搜索 q anchored:搜索限制范圍的字符串 q numeric:按照字符串里的數(shù)字為依據(jù),算出順序。例如 Foo2.txt < Foo7.txt < Foo25.txt compare(_:options:)方法的語(yǔ)法形式如下: func compare(_ string: String, options mask: NSString.CompareOptions = []) -> ComparisonResul (3)compare(:options:range:)方法和compare(:options:)方法的功能類似,但是它比compare(_:options:)方法多了一個(gè)rangeOfReceiverToCompare參數(shù),此參數(shù)可以用來對(duì)比較范圍進(jìn)行設(shè)置。其語(yǔ)法形式如下: func compare(_ string: String, options mask: NSString.CompareOptions = [], range rangeOfReceiverToCompare: NSRange) -> ComparisonResult (4)compare(:options:range:locale:)方法和compare(:options:range:)方法的功能類似,但是它比compare(_:options:range:)方法多了一個(gè)locale參數(shù),此參數(shù)可以用來設(shè)置語(yǔ)言環(huán)境。其語(yǔ)法形式如下: func compare(_ string: String, options mask: NSString.CompareOptions = [], range rangeOfReceiverToCompare: NSRange, locale: AnyObject?) -> ComparisonResult 3.本地化比較 對(duì)于本地化比較在NSString中提供了3種方法, 分別為: localizedCaseInsensitiveCompare(:)、localizedStandardCompare(:)和localizedCompare(_:)。 (1)localizedCaseInsensitiveCompare(_:)方法為不區(qū)分大小寫、本地化比較字符串,其語(yǔ)法形式如下: func localizedCompare(_ string: String) -> ComparisonResult 其中,string用來指定一個(gè)比較的字符串。 (2)localizedStandardCompare(_:)方法為本地化標(biāo)準(zhǔn)字符串的比較,其語(yǔ)法形式如下: func localizedStandardCompare(_ string: String) -> ComparisonResult 其中,string用來指定一個(gè)比較的字符串。 localizedCompare(_:)方法是區(qū)分大小寫、本地化比較字符串,其語(yǔ)法形式如下: func localizedCompare(_ string: String) -> ComparisonResult 其中,string用來指定一個(gè)比較的字符串。 4.判斷字符串 在NSString中提供了3種對(duì)字符串判斷的方法, 分別為:hasprefix(:)、hasSuffix(:)和isEqual(to:)方法。 (1)hasPrefix(_:)方法用來判斷字符串是否以某一指定字符串開頭,其語(yǔ)法形式如下: func hasPrefix(_ str: String) -> Bool 其中,str用來指定一個(gè)字符串。 (2)hasSuffix(:)方法正好和hasPrefix(:)方法相反,它是用來判斷字符串是否以某一指定字符串結(jié)尾的,其語(yǔ)法形式如下: func hasSuffix(_ str: String) -> Bool 其中,str用來指定一個(gè)字符串。 (3)isEqual(to:)方法是用來判斷字符串是否相等的,其語(yǔ)法形式如下: func isEqual(to aString: String) -> Bool 其中,aString用來指定字符串。 4.7前綴和后綴比較 1.前綴/后綴相等 通過調(diào)用字符串的 hasPrefix/hasSuffix 方法來檢查字符串是否擁有特定前綴/后綴。兩個(gè)方法均需要以字符串作為參數(shù)傳入并傳出 Boolean 值。兩個(gè)方法均執(zhí)行基本字符串和前綴/后綴字符串之間逐個(gè)字符的比較操作。 下面的例子以一個(gè)字符串?dāng)?shù)組表示莎士比亞話劇 羅密歐與朱麗葉 中前兩場(chǎng)的場(chǎng)景位置: let romeoAndJuliet = [ “Act 1 Scene 1: Verona,A public place”, “Act 1 Scene 2: Capulet’s mansion”, “Act 1 Scene 3: A room in Capulet’s mansion”, “Act 1 Scene 4: A street outside Capulet’s mansion”, “Act 1 Scene 5: The Great Hall in Capulet’s mansion”, “Act 2 Scene 1: Outside Capulet’s mansion”, “Act 2 Scene 2: Capulet’s orchard”, “Act 2 Scene 3: Outside Friar Lawrence’s cell”, “Act 2 Scene 4: A street in Verona”, “Act 2 Scene 5: Capulet’s mansion”, “Act 2 Scene 6: Friar Lawrence’s cell” ]
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注