• [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
  • 相关阅读:
    [洛谷P3369] 普通平衡树 Treap & Splay
    [NOIp2016] 组合数问题
    [洛谷P4777] [模板] 扩展中国剩余定理
    [洛谷P3384] [模板] 树链剖分
    [NOIp2017] 时间复杂度
    [bzoj3270] 博物馆
    [USACO06DEC] Milk Patterns
    [USACO5.1] Musical Themes
    后缀数组 模板+详解
    [HNOI2004] L语言
  • 原文地址:https://www.cnblogs.com/strengthen/p/10091038.html
Copyright © 2020-2023  润新知