美文网首页
Swift字符处理

Swift字符处理

作者: DavidWongDev | 来源:发表于2018-10-07 17:03 被阅读0次

    比起很多传统语言,Swift在字符处理方面显得更加简洁易用。本文会总结一些Swift在字符处理上的常用方法,持续更新中。
    环境:Mac+Swift4

    十进制,二进制,和十六进制的转化

        class func simple(){
            //十进制转二进制
            let dec = 15
            let bin = String.init(dec, radix: 2, uppercase: true)
            print("decimal \(dec) transfer to bin \(bin)")
            
            //二进制转十进制
            let descNew = Int(bin, radix: 2) ?? 0
            print("bin \(bin) transfer to decimal \(descNew)")
            
            //十进制转十六进制
            let hex = String.init(dec, radix: 16, uppercase: true)
            print("decimal \(dec) transfer to hex \(hex)")
            
            //十六进制转十进制
            let descNew2 = Int(hex,radix:16) ?? 0
            print("hex \(hex) transfer to decimal \(descNew2)")
        }
    

    这里补充记录一下字符相关基础知识:

    • 我们知道,计算机内部,所有信息最终都是一个二进制值。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为 ASCII 码,一直沿用至今。
    • 八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。中文一般需要两个字节。
    • ASCII 码一共规定了128个字符的编码。但是其他语言是不够的,所以有了别的编码方式比如GB2312。早些时候打开一个word或者txt经常出现乱码就是因为编码方式不一致。
    • 后来出现了Unicode,简而言之就是把所有语言所有符号甚至表情编进字符集。其中常见的UTF-8就是Unicode 的实现方式之一。
    • 具体怎么编码解码以及更多的细节可以看这篇文章字符编码笔记:ASCII,Unicode 和 UTF-8
    • ASCII码对应可以看26个字母和数字符号ASCII码对照表

    Swift4中字符遍历

    用一个例子说明
    我们将一个A10B1C2的解压为AAAAAAAAAABCC

        class func unZip(){
            let origial = "A10B1C2"
            var result = ""
            var tempNumber = 0
            var tempStr = ""
            let size = origial.count
            for (index,c) in Array(origial).enumerated() {
                let s = String(c)
                if(s.isInt){
                    if(index==(size-1)){
                       tempNumber = tempNumber*10 + (Int(s) ?? 0)
                       result = result + unzipSingleWord(word: tempStr, num: tempNumber)
                    }
                    else{
                        tempNumber = tempNumber*10 + (Int(s) ?? 0)
                    }
                }
                else{
                    result = result + unzipSingleWord(word: tempStr, num: tempNumber)
                    tempStr = s
                    tempNumber = 0
                }
            }
            print("result is \(result)")
        }
    

    其中,对String是数字还是普通字符我们可以这样判断

    extension String {
        var isInt: Bool {
            return Int(self) != nil
        }
    }
    

    相关文章

      网友评论

          本文标题:Swift字符处理

          本文链接:https://www.haomeiwen.com/subject/failaftx.html