[Swift]字符串根据索引获取指定字符,依据ASCII实现字符和整数的相互转换
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/ )
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10091038.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
最新语法:
var arr = s.map { Int($0.asciiValue!) }
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。
它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
请注意,ASCII是American Standard Code for Information Interchange缩写,而不是ASCⅡ(罗马数字2),有很多人在这个地方产生误解。
在Swift中实现:字符串根据索引获取指定字符,
依据ASCII编码,实现字符和整数的相互转换。
首先扩展相应类的方法:
1 //String扩展 2 extension String { 3 //subscript函数可以检索数组中的值 4 //直接按照索引方式截取指定索引的字符 5 subscript (_ i: Int) -> Character { 6 //读取字符 7 get {return self[index(startIndex, offsetBy: i)]} 8 9 //修改字符 10 set 11 { 12 //转换为字符数组 13 var arr:[Character] = Array(self) 14 arr[i] = newValue 15 self = String(arr) 16 } 17 } 18 19 //String转ASCII整数值(定义小写为整数值) 20 public var ascii: Int { 21 return Int(unicodeScalars.first?.value ?? 0) 22 } 23 } 24 25 //Character扩展 26 extension Character 27 { 28 //Character转ASCII整数值(定义小写为整数值) 29 var ascii: Int { 30 get { 31 return Int(self.unicodeScalars.first?.value ?? 0) 32 } 33 } 34 35 //判断是否为数字 36 func isDigit() -> Bool 37 { 38 if self.ascii > 47 && self.ascii < 58 39 { 40 return true 41 } 42 return false 43 } 44 45 //判断是否为大写字母 46 func isUppercased() -> Bool 47 { 48 if self.ascii > 64 && self.ascii < 91 49 { 50 return true 51 } 52 return false 53 } 54 55 //判断是否为小写字母 56 func isLowercased() -> Bool 57 { 58 if self.ascii > 96 && self.ascii < 123 59 { 60 return true 61 } 62 return false 63 } 64 65 //判断是否为字母 66 func isLetter()-> Bool 67 { 68 if (self.ascii > 64 && self.ascii < 91) || (self.ascii > 96 && self.ascii < 123) 69 { 70 return true 71 } 72 return false 73 } 74 } 75 76 //Int扩展 77 extension Int 78 { 79 //Int转Character,ASCII值(定义大写为字符值) 80 var ASCII:Character 81 { 82 get {return Character(UnicodeScalar(self)!)} 83 } 84 }
调用扩展方法,实现功能。示例:
1 //字符串 2 var str:String = "S" 3 //String转ASCII整数值(定义小写为整数值) 4 print(str.ascii) 5 //Print:83 6 7 //字符串 8 str = "Strengthen" 9 //根据索引获取字符 10 let char:Character = str[0] 11 //字符串修改 12 str[1] = Character("Q") 13 print(str) 14 //Print: SQrengthen 15 16 //Character转ASCII整数值(定义小写为整数值) 17 let num:Int = char.ascii 18 print("\(char) ", terminator: "") 19 print("\(num) ", terminator: "") 20 //Print: S 83 21 22 //表示整数的字符串 23 let strNum:String = "88" 24 //先转换为整数,在根据ASCII表转换为对应字符 25 let charNum:Character = Int(strNum)!.ASCII 26 print("\(charNum) ", terminator: "") 27 //Print: X