美文网首页
Swift散记1 字符串和字符

Swift散记1 字符串和字符

作者: 蒋昉霖 | 来源:发表于2016-06-01 15:44 被阅读10次

    插值字符串中写在括号中的表达式不能包含非转义反斜杠(),并且不能包含回车,不过,插值字符串可以包含其他字面量

    Swift的char类型是基于Unicode标量建立的,几乎涵盖了全球的字符,
    Oc我记得好像是SCIII什么的...忘了

            var a = "12\\"
            print(a)
            a = "12\0"
            print(a)
            let a2 = Int(a)
            print(a2)
            a = "12"
            let a3 = Int(a)
            print(a3)
    
    // 结果
    /*
    12\
    12�
    nil , 因为转义字符\0是空字符,这个a实际上是12+空字符,所以转出来是nil
    Optional(12)
    */
    

    如果不想换行,可以传递一个空字符串给terminator参数
    如:

            let greeting = "Guten Tag!"
    // .indices属性是创造了一个含有这个字符串的所有范围,
    // 在swift里面,字符串不能用整数(integer)做索引,如果写了,直接报错
            for index in greeting.characters.indices {
                print("\(greeting[index]) ", terminator: "")
            }
    // 结果
    // G u t e n   T a g ! 
    

    Swift中String不可以直接用Int类型的下表来取出单个Char
    那么

            let num1 = greeting.startIndex.advancedBy(7)
            print("\n\(num1)")
            let a5 = greeting[num1]
            print(a5)
    

    这是可以打印出来的,但是这个num1的类型,不是Int,是Index类型,不知道这是个什么玩意儿..

    String 比较
    如果两个字符串(或者两个字符)的可扩展的字形群集是标准相等的,那就认为它们是相等的。
    例如

            let c = "\u{E9}"
            print(c)
            let d = "\u{65}\u{301}"
            print(d)
    // 打印结果都是é,
    // 这两个方式都是é的有效表达方式,所以认为两者相等
    
    // 但是,英文的A和俄语中的A意思不同,所以即使打印看着一样,两者也是不等的
    let latinCapitalLetterA: Character = "\u{41}" // 英语
    let cyrillicCapitalLetterA: Character = "\u{0410}" // 俄语
    if latinCapitalLetterA != cyrillicCapitalLetterA {
        print("These two characters are not equivalent")
    }
    // 打印 "These two characters are not equivalent"
    

    在 Swift 中,字符串和字符并不区分地域(not locale-sensitive)。

    String前缀和后缀
    hasPrefix(:)/hasSuffix(:)
    接收一个String类型的参数,返回一个Bool值

    相关文章

      网友评论

          本文标题:Swift散记1 字符串和字符

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