[Swift]字串根據索引獲取指定字元,依據ASCII編碼實現字元和整數的快速轉換
阿新 • • 發佈:2018-12-09
ASCII(American Standard Code for Information Interchange,美國資訊交換標準程式碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言。
它是現今最通用的單位元組編碼系統,並等同於國際標準ISO/IEC 646。
請注意,ASCII是American Standard Code for Information Interchange縮寫,而不是ASCⅡ(羅馬數字2),有很多人在這個地方產生誤解。
在Swift中實現:字串根據索引獲取指定字元,依據ASCII編碼,實現字元和整數的快速轉換
首先擴充套件相應類的方法:
1 extension String { 2 //subscript函式可以檢索陣列中的值 3 //直接按照索引方式擷取指定索引的字元 4 subscript (_ i: Int) -> Character { 5 //讀取字元 6 get {return self[index(startIndex, offsetBy: i)]} 7 8 //修改字元 9 set 10 { 11var str:String = self 12 var index = str.index(startIndex, offsetBy: i) 13 str.remove(at: index) 14 str.insert(newValue, at: index) 15 self = str 16 } 17 } 18 } 19 20 //Character擴充套件方法 21 extension Character 22 {23 //屬性:ASCII整數值(定義小寫為整數值) 24 var ascii: Int { 25 get { 26 let s = String(self).unicodeScalars 27 return Int(s[s.startIndex].value) 28 } 29 } 30 } 31 32 //Int擴充套件方法 33 extension Int 34 { 35 //屬性:ASCII值(定義大寫為字元值) 36 var ASCII:Character 37 { 38 get {return Character(UnicodeScalar(self)!)} 39 } 40 }
呼叫擴充套件方法,實現功能。示例:
1 //字串 2 let str:String = "Strengthen" 3 //根據索引獲取字元 4 let char:Character = str[0] 5 //根據字元獲取ASCII對應的字元整數值 6 let num:Int = char.ascii 7 print("\(char) ", terminator: "") 8 print("\(num) ", terminator: "") 9 //Print: S 83 10 11 //表示整數的字串 12 let strNum:String = "88" 13 //先轉換為整數,在根據ASCII錶轉換為對應字元 14 let charNum:Character = Int(strNum)!.ASCII 15 print("\(charNum) ", terminator: "") 16 //Print: X