[swift]4.0原生字符串

4.1字符
1.格式: 變量關鍵字和常量關鍵字
變量 : Character = 字符值。
注意點:字符值 必須用雙引號括起來, 必須是一個字符。
例:
var ch :Character = “c”// 字符值 必須用雙引號,並且是一個字符
println(“ch=(ch)”)
運行結果
ch=c
2.字符串和字符的關係:
字符串是由N個字符組成的,即字符串是字符的集合。
例:
var str = “ABC”//字符串
“ABC” 是有 三個字符組成的分別是 :字符”A”,字符“B”,字符”C”
4.2創建字符串
1.Swift支持String字符串類型和Charater字符類型來提供一個快速的、支持Unicode編碼的方式來處理字符操作。
Swift的String類型和Objective-C的NSString無縫接合,所有NSString的API對String同樣適用。但是String變量總是可變長的,而在Objective-C中變長字符串是NSMutableString。
2.Swift字符串是傳值類型,在傳入函數參數或者賦值時,它是新建一個原來字符串的拷貝,而不是分配一個指針,新建字符串和原來的字符串並不儲存在同一個空間。區別於Objective-C中NSString,後者是傳址類型,即相當於一個指針。
Character字符類型同樣用雙引號把字符括起來,每一個字符代表一個獨立的Unicode字符,字符串相當於Character的一個集合。
字符串和字符之間可以兩兩連接,使用最簡單的運算符
+,+=同樣適用。
3.創建空字符串
/定義一個空字符串第一種方法:
var str1=”“定義一個空字符串
第二種方法:
var str2 = String()
運行結果
str1=
str2=
4.判斷字符串是否爲空 (isEmpty)
判斷字符串是否爲空:
var str3:String = “”if str3.isEmpty { //isEmpty是字符串的一個屬性,判斷字符串是否爲空
println(“str3的值是空”)
}
else{
println(“str3的值不爲空”)
}

運行結果
str3的值是空
5.字符串的轉義符
\0 空字符 \ 反斜槓\ t 製表符\n 換行符\r 回車符
\” 雙引號\’ 單引號
例:
換行符:
var strA = “Hello World \n 1”// \n是換行符
println(“strA=(strA)”)
引號:
var strB = “\”雙引號”// \” 是代表雙引號
println(“strB=(strB)”)
單引號:
var strC = “\’單引號”// \’ 代表單引號
println(“strC=(strC)”)
運行結果
strA=Hello World
1
strB=”雙引號
strC=’單引號
4.3字符串拼接
1.字符和字符串拼接,用+直接來拼接,組成新的字符串 (和字符串拼接用法一直)
例:import Foundation
var C:Character = “S”//定義C 是字符變量var str = C + ” hello”
println(str )
運行結果
S hello
2.字符串變量和常量用+或 +=來拼接 組成新的字符串
例:
多個字符串變量拼接 用 + 來拼接
var str4 = “hello”
var str5 = ” swift”
var str6 = str4+str5 //字符串變量拼接
println(“str6=(str6)”)
字符串變量和常量用+或 +=來拼接
var str7=”hello ”
str7 += “swift”//字符串變量和字符常量拼接可以用+= 拼接
println(“str7=(str7)”)
運行結果
str6=hello swift
str7=hello swift
4.字符串和佔位變量 組成新的字符串
var a = 3//定義一個整形變量
var strQ = “a = (a)”// 字符串和佔外變量,組成新的變量(佔外變量表示(變量))
println(“(strQ)”)
運行結果
a = 3
4.4字符串插入、刪除和替換
1.對應可變字符串可以插入、刪除和替換,String提供了幾個方法可以幫助實現這些操作。這些方法如下:
splice(_:atIndex:)。在索引位置插入字符串。
insert(_:atIndex:)。在索引位置插入字符。
removeAtIndex(_:)。在索引位置刪除字符。
removeRange(_:)。刪除指定範圍內的字符串。
replaceRange(_:,with: String) 。使用字符串或字符替換指定範圍內的字符串。
  代碼:
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)”)
輸出結果:
原始字符串: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語言的strcmp一樣是逐個比較
var str4 = “abc”;
var str5 = “abc”;
if str4 == str5 { print(“相等”); }
else { print(“不相等”); }
var str6 = “abd”;
var str7 = “abc”;
else { print(“不大於等於”); }
4.6大小和相等比較
字符串比較可以分爲:不區分大小寫比較、區分大小寫比較以及本地化比較三部分。首先我們來看不區分大小寫比較,不區分大小寫比較顧名思義就是不區分字符串中字母的大小寫,即A和a相同。
1.不區分大小寫比較
在NSString中使用caseInsensitiveCompare(_:)方法實現這一功能,其語法形式如下:
func caseInsensitiveCompare(_ string: String) -> ComparisonResult
其中,string用來指定一個比較的字符串。該方法的返回值爲ComparisonResult類型
。ComparisonResult是一個枚舉類型,包含了以下3個成員:
q orderedAscending(-1):左操作數小於右操作數。
q orderedSame(0):兩個操作數相等。
q orderedDescending(1):左操作數大於右操作數。
2.區分大小寫比較
有不區分大小寫比較,相對的就有區分大小寫比較。在NSString中提供了4種方法實現了這種比較,
分別爲:compare(:)、compare(:options:)、compare(:options:range:)和compare(:options:range:locale:)方法。
(1)compare(_:)方法就是用來比較字符串的,它需要區分字符串的大小寫,其語法形式如下:
func compare(_ string: String) -> ComparisonResult
其中,string用來指定一個比較的字符串。
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
(3)compare(:options:range:)方法和compare(:options:)方法的功能類似,但是它比compare(_:options:)方法多了一個rangeOfReceiverToCompare參數,此參數可以用來對比較範圍進行設置。其語法形式如下:
func compare(_ string: String, options mask: NSString.CompareOptions = [], range rangeOfReceiverToCompare: NSRange) -> ComparisonResult
(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
3.本地化比較
對於本地化比較在NSString中提供了3種方法,
分別爲:
localizedCaseInsensitiveCompare(:)、localizedStandardCompare(:)和localizedCompare(_:)。
(1)localizedCaseInsensitiveCompare(_:)方法爲不區分大小寫、本地化比較字符串,其語法形式如下:
func localizedCompare(_ string: String) -> ComparisonResult
其中,string用來指定一個比較的字符串。
(2)localizedStandardCompare(_:)方法爲本地化標準字符串的比較,其語法形式如下:
func localizedStandardCompare(_ string: String) -> ComparisonResult
其中,string用來指定一個比較的字符串。
localizedCompare(_:)方法是區分大小寫、本地化比較字符串,其語法形式如下:
func localizedCompare(_ string: String) -> ComparisonResult
其中,string用來指定一個比較的字符串。
4.判斷字符串
在NSString中提供了3種對字符串判斷的方法,
分別爲:hasPrefix(:)、hasSuffix(:)和isEqual(to:)方法。
(1)hasPrefix(_:)方法用來判斷字符串是否以某一指定字符串開頭,其語法形式如下:
func hasPrefix(_ str: String) -> Bool
其中,str用來指定一個字符串。
(2)hasSuffix(:)方法正好和hasPrefix(:)方法相反,它是用來判斷字符串是否以某一指定字符串結尾的,其語法形式如下:
func hasSuffix(_ str: String) -> Bool
其中,str用來指定一個字符串。
(3)isEqual(to:)方法是用來判斷字符串是否相等的,其語法形式如下:
func isEqual(to aString: String) -> Bool
其中,aString用來指定字符串。
4.7前綴和後綴比較
1.前綴/後綴相等
通過調用字符串的 hasPrefix/hasSuffix 方法來檢查字符串是否擁有特定前綴/後綴。兩個方法均需要以字符串作爲參數傳入並傳出 Boolean 值。兩個方法均執行基本字符串和前綴/後綴字符串之間逐個字符的比較操作。
下面的例子以一個字符串數組表示莎士比亞話劇 羅密歐與朱麗葉 中前兩場的場景位置:
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” ]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章