美文网首页
Swift中 Character(一)

Swift中 Character(一)

作者: 你duck不必呀 | 来源:发表于2021-11-05 14:21 被阅读0次

    OC语言中,定义一个简单的字符可以通过char类型

    char ch = 'A'
    

    char类新只占一个字节,因此不能存储复杂的字符,比如汉子"中",复杂字符要用字符串的指针

    char ch1[] = "中"
    char *ch2 = "中"
    

    Swift中用Character,使用起来会方便许多

    创建单个字符,需要指定类型Character

    let ch:Character = "A" // Character
    let en = "A" // String 
    

    Character类型不允许存储多个字符

    let chars:Character = "AB" // 编译器报错,Cannot convert value of type 'String' to specified type 'Character'
    

    也不允许存储空字符,特殊字符需要转义

    let char:Character = "" // 编译器报错,Cannot convert value of type 'String' to specified type 'Character'
    let char:Character = Character("") //能绕过编译器检查,但是运行起来就报异常
    

    转义的特殊字符\0(空字符)、\\(反斜杠)、\t(水平制表符)、\n(换行)、\r(回车)、\"(双引号)和\'(单引号)

    或者任意Unicode标量值,格式为"\u{N}",N位 十六进制数

    let en:Character = "\u{41}" // A
    

    字符的编码值

    对于单字符,可以通过asciiValue属性获取ASCII码值
    属性asciiValue获取单个字符的ASCII码值

    en.asciiValue // Optional(65)
    

    由于UTF-8兼容ASCII,单字符也可以通过utf8.first获取ASCII码值

    en.utf8.first // Optional(65)
    

    超出ASCII范围的字符返回nil,使用的时候需要注意

    let en:Character = "😊"
    print(en.asciiValue) // nil
    

    String转字符

    String遵守Sequence协议,可通过for-in 遍历字符串,得到Character字符

    for character in "Dog!🐶" {
        print(character) // D o g ! 🐶
    }
    

    String可以用Character类型数组初始化

    let characters:[Character] = ["D","o","g","!","🐶"]
    var string = String(characters) //Dog!🐶
    

    不能直接通过 + 拼接到字符串,需要通过append(:)

    string.append(ch) // Dog!🐶A
    

    数组Array有个初始化方法,可以把Sequence转换成数组

    let chars = Array(string)
    print(chars) // ["H", "e", "l", "l", "o", " ", "w", "o", "r", "d", "!"]
    

    字符比较

    字符Character遵守Comparable协议,字符比较是根据编码值比较

    let lch = "A" // 65
    let rch = "B" //66
    lch > rch // false
    

    遵守Comparable协议另一个特点是可以使用范围Range

    let charRange = Character("A")..<Character("Z")
    print(charRange) //A..<Z
    

    字符转数字

    数字字符属于单字符,可以使用ASCII码减去0字符

    let numCh:Character = "5"
    // 这里确定强制解包不会出错
    let num = numCh.asciiValue! - Character("0").asciiValue!
    print(num) // 5
    

    swift提供了特定的初始化方法

    Int("5") //Optional(5)
    Float("5.0") // Optional(5.0)
    

    isNumber用以判断一个字符是否是数字,不仅可以判断简单的字符,还可以是复杂的字符

    let numCh:Character = "7" 
    numCh.isNumber // true
    
    let complexCh:Character = "⅚"
    complexCh.isNumber // true
    
    // 1⃣️,十,㊈ isNumber判断都是true
    

    Character简单介绍就到这里。陆续补充中。。。。。。

    相关文章

      网友评论

          本文标题:Swift中 Character(一)

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