美文网首页
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