美文网首页
03.Swift字符串

03.Swift字符串

作者: biyu6 | 来源:发表于2018-05-24 17:38 被阅读0次
    //1.字符串的拼接
    let str1 = "world"
    var str2 = "hello" + str1
    str2 += ",又加了字符串"
    str2.append("ddddd")
    print("字符串的拼接:\(str2)")
    
    //2.多行字符串的写法:用三引号包裹
    let quotation = """
    张三: "你在哪"
    李四: "家里蹲"
    """
    let largStr = """
    如果你想换行,以便加强代码的可读性,但是你又不想在你的多行字符串字面量中出现换行符的话,\
    你可以用在行尾写一个反斜杠作为续行符。
    
    如果不加反斜杠换行的话,结果就会有一个换行符
    """
    let lineBreaks = """
    
       为了让一个多行字符串字面量开始和结束于换行符
    请将换行写在第一行和最后一行
    
    """
    //多行字符串的拼接
    let moreOne = """
        one
        two
    """
    let moreTwo = """
        one
        two
    
    """
    let moreThree = """
        three
    """
    print("没有换行符,拼接后也没有换行:\(moreOne + moreThree)")
    print("有换行符,拼接的会折行显示:\(moreTwo + moreThree)")
    
    //3.转义字符:\0(空字符)、\\(反斜线)、\t(水平制表符)、\n(换行符)、\r(回车符)、\"(双引号)、\'(单引号)
    //4.Unicode标量:\u{n} n为任意1~8位的十六进制数,而且可以用Unicode位码
    let wiseWords = "\"吃饭了吗?\",有人问"
    let dollar = "\u{24}"//美元符号
    let blackHeart = "\u{2665}"//黑色的心
    let redHeart = "\u{1F496}"//红色的心
    
    //4.字符串是否为空
    var str3 = ""
    if str3.isEmpty {
        print("字符串没有值")
    }
    
    //5.字符串是值类型,会进行值拷贝,字符串传递过程中不会被修改,除非是你自己改的
    
    //6.字符串的遍历
    for str in "Hello World!🐶" {
        print("遍历字符串获取每一个字符的值:\(str)")
    }
    
    //7.字符串的字符
    let exclamation: Character = "!"
    print("通过Character 来修饰的字符串 赋值 时不能为空、也不能超过两个字符,只能是一个字符")
    
    let catCharArr:[Character] = ["C","a","t"] //字符数组
    let catStr = String(catCharArr)
    print("字符数组转字符串:\(catStr)")
    
    let eAcute: Character = "\u{E9}" //é
    let combined: Character = "\u{65}\u{301}" //é 只不过是一个字母e和一个重音符合组合成的,可以组合一些复杂的字符
    print("可扩展字形群集:\(eAcute)、\(combined)")
    
    var cafeStr = "cafe"
    print("字符串中字符的数量:\(cafeStr.count)")
    cafeStr += "\u{301}"
    print("字符串中字符的数量:\(cafeStr.count),因为把e变成了é,所以数量不变")
    //字符串中由于可能有Unicode标量,所以并不是每一个字符都占用相同的内存空间
    
    //8.字符串索引:字符串可以通过索引来获取某个字符
    let greeting = "我是一个字符串,用来测试索引"
    greeting[greeting.startIndex]//开始处--"我"
    greeting[greeting.index(after: greeting.startIndex)]//**index之后的 --"是"
    greeting[greeting.index(before: greeting.endIndex)]//**index之前的 --"引"
    let index = greeting.index(greeting.startIndex, offsetBy: 5)//**index偏移5
    greeting[index] //--"符"
    for index in greeting.indices{ //indices属性相当于是该字符串的全部范围
        print("遍历这个字符串:\(greeting[index])")
    }
    
    //9.字符串的插入和删除
    var welcome = "hello"
    welcome.insert("!", at: welcome.endIndex)//在字符串后插入"!"
    welcome.insert(contentsOf: "视界", at: welcome.index(before: welcome.endIndex))//在结束字符前插入
    print("字符串插入结果:\(welcome)")
    
    welcome.remove(at: welcome.index(before: welcome.endIndex))//移除结束的那个字符
    let removeRange = welcome.index(welcome.endIndex, offsetBy: -2)..<welcome.endIndex // 最后2个字符
    welcome.removeSubrange(removeRange)//移除最后两个字符
    
    //10.子字符串
    let subStr = "Hello, world!"
    let subIndex = subStr.index(of: ",") ?? greeting.endIndex//相当于分割含","前的字符串范围
    let begStr = subStr[..<subIndex] //“Hello” bgeStr是SubStr的子字符串,它的内存空间是SubStr内存空间的一部分
    let newStr = String(begStr)//newStr才是一个字符串,有自己独立的内存空间
    
    //11.字符串比较
    //是否相等 == 、 !=
    let hasStr = "第一章:大大"
    if hasStr.hasPrefix("第一章") {
        print("字符串前缀包含 第一章 ")
    }
    if hasStr.hasSuffix("大") {
        print("字符串后缀包含 大")
    }
    
    //字符串的Unicode表示形式
    let dogStr = "Dog‼🐶"
    
    //UTF-8表示
    for codeUnit in dogStr.utf8 {
        print("utf8表示的字符串:\(codeUnit)") //Dog:(68, 111, 103) ‼:(226, 128, 188) 🐶:(240, 159, 144, 182)
    }
    //UTF-16表示
    for codeUnit in dogStr.utf16 {
        print("utf16表示的字符串:\(codeUnit)") //Dog:(68, 111, 103) ‼:(8252) 🐶:(55357,56374)
    }
    for codeUnit in dogStr.unicodeScalars{//jieguo 21位的 Unicode 代码点,value用UInt32来表示
        print("UnicodeScalar遍历结果:\(codeUnit) 对应 \(codeUnit.value)")//Dog:(68,111,103) ‼:8252 🐶:128054
    }
    
    
    

    相关文章

      网友评论

          本文标题:03.Swift字符串

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