美文网首页
Swift--原生字符串

Swift--原生字符串

作者: 优雅的步伐 | 来源:发表于2019-08-04 22:15 被阅读0次
    • 字符
    • 创建字符串
    • 字符串的拼接
    • 字符串插入、删除和替换
    • 字符串比较

    字符

    在Java、C、C++和Objective-C等大多数语言中,字符是放在单引号(')之间的。而在Swift语言中,我们不能使用单引号方式,必须使用双引号(")把字符括起来。而Swift中的字符串也使用双引号(")把字符括起来。

    Unicode编码

    Unicode编码可以有单字节编码、双字节编码和四节编码,它们的表现形式是\u{n}, 其中n为1-8个十六进制数。
    Unicode编码可以在http://vazor.com/unicode/网站查询字符与编码的对应关系。

    下面的输出结果是一样的。都是ଖ

    var str3 = "ଖ"
    print(str3)
    
    var str4 = "\u{0B16}"
    print(str4)
    
    转义符
    字符表示 Unicode编码 说明
    \t \u{0009} 水平制表符tab
    \n \u{000a} 换行
    \r \u{000d} 回车
    \" \u{0022 双引号
    \' \u{0027} 单引号
    \\ \u{005c} 反斜线

    /**
     转义字符
     **/
    let specialCharTab1 = "Hello\tWorld."
    print("specialCharTab1:\(specialCharTab1)")
    
    let specialCharNewLine = "Hello\nWorld."
    print("specialCharTab1:\(specialCharNewLine)")
    
    let specialCharReturn = "Hello\rWorld."
    print("specialCharTab1:\(specialCharReturn)")
    
    let specialCharQuotationMark = "Hello\"World\"."
    print("specialCharTab1:\(specialCharQuotationMark)")
    
    let specialCharApostrophe = "Hello\'World\'."
    print("specialCharTab1:\(specialCharApostrophe)")
    
    let specialCharReverseSolidus = "Hello\\World."
    print("specialCharTab1:\(specialCharReverseSolidus)")
    

    打印结果为:


    image.png

    创建字符串

    在Swift中字符串的类型是String, String是一个结构体。
    提示
    在OS X和iOS应用开发中有一个基础框架———Foundation框架,这个框架中也有字符串类型NSString。NSString是一个类,而非结构体。因此提到字符串事应该明确是Swift中原生字符串String, 还是Foundation框架中的字符串NSString。为了能够使它们互相转化,苹果公司提供一种 "零开销桥接技术"使得互相转化更加低成本、更加简单。

      /**
       字符串的拼接
       **/
    
    let str5 = "Hello world!"
    let count = str5.count
    print(count)
    
    let 🌍 = "🐶🐎🐱🐭🐰🐻🐼🐂🐫🐛🐝"
    print("已经上传的小动物数: \(🌍.count)")
    
    let 熊 = "🐻"
    let 猫 = "🐱"
    let 🐼 = 熊 + 猫 //字符串拼接
    
    //声明空字符串
    let emptyString = ""
    let emptyString2 = String() //也可以调用String的结构体的构造函数来创建一个空的字符串
    

    注意:
    字符串的类型是String类型,String类型是一个结构体,结构体的实例化和创建它的实例的方式就是加(), 加括号其实就是调用它的结构体的构造函数,也就是通过它的构造函数来创建一个字符串,只不过是创建了一个空的字符串。

    字符串的拼接

    可变字符串

    在Swift中通过let声明的字符串常量是不可变字符串,var声明的字符串常量是可变字符串。

    提示:Foundation框架中也有可变字符串类型是NSMutableString, NSMutableString继承于NSString。

    字符串拼接
    • String字符串之间的拼接可以使用+ 和+=运算符。
    • String字符串与字符拼接可以使用String的append(_:Character)方法。

    /**
     字符串的拼接
     **/
    
    //+和+= 只能针对于String类型的追加
    var livingThings = "🐶🐎🐱🐭🐰🐻🐼🐂🐫🐛🐝"
    livingThings = livingThings + "👦"   //“👦”是字符串类型String
    livingThings += "👧"
    
       //Character即字符不能使用+= 或者+ 来拼接
      //append只能针对于字符类型的追加,在尾部加上
    var flower: Character = "🌺"
    livingThings.append(flower)
    print("生物数: \(livingThings.count)")
    
    let number = 9
    let total = "\(number)加10等于\(Double(number) + 10)"
    

    字符串的插入,删除和替换

    /**
    字符串插入、删除和替换
     **/
    
    var str6 = "Objective-C and Swift"
    print("原始字符串:\(str6)")
    
    //插入字符
    str6.insert(".", at: str6.endIndex)
    print("插入.字符后:\(str6)")
    
    //访问其结束前一个字符,在Swift3.0 predecessor使用以下代替:
    str6.remove(at: str6.index(before: str6.endIndex))
    print("删除.字符后:\(str6)")
    
    //访问其开始后一个字符, 在Swift3.0 advancedBy使用以下代替:
    var startIndex = str6.startIndex
    var endIndex = str6.index(str6.startIndex, offsetBy:9)
    var range = startIndex...endIndex
    //删除范围
    str6.removeSubrange(range)
    print("删除范围后:\(str6)")
    
    
    //访问其开始后一个字符, 在Swift3.0 successor使用以下代替:
    startIndex = str6.startIndex
    endIndex = str6.index(after: str6.startIndex)
    range = startIndex...endIndex
    //替换范围
    str6.replaceSubrange(range, with: "C++")
    print("替换范围后:\(str6)")
    

    打印结果如下:


    image.png

    字符串的比较

    字符串类型与整型和浮点型一样,都可以进行相等以及大小的比较,比较的依据是Unicode编码值大小。比较相等运算符==或!=。

    提示Swift字符Character和字符串String都是结构体类型,只能使用==或!=比较是否相等或不等。而Foundation框架中的NSString字符串的比较是否相等或不等,则需要使用===或!==运算符。

    /**
     字符串的比较
     **/
    
    let 熊1 = "🐻"
    let 猫1 = "🐱"
    
    if 熊1 > 猫1 {
        print("🐻 大于 🐱")
    }else {
        print("🐻 小于 🐱")
    }
    
    let 🐼1 = 熊1 + 猫1
    if 🐼1 == "🐻🐱" {
        print("🐼1 是🐻🐱")
    }else {
        print("🐼1 不是🐻🐱")
    }
    
    let emptyString3 = ""
    let emptyString4 = String()
    
      if emptyString3 == emptyString4 {
            print("emptyString3 与 emptyString4 相等")
        }else {
            print("emptyString3 与 emptyString4 不bu相等")
        }
    
    let emptyString5: NSString = ""
    let emptyString6: NSString = ""
    
    //NSString与String可以相互转换 即 “零开销桥接技术”, 下面要是    写成"==" 就是利用这种技术,正常情况下应该写成“===”
    if emptyString5 === emptyString6 {
        print("emptyString5 与 emptyString6 相等")
    }else {
      print("emptyString5 与 emptyString6 不bu相等")
    }
    
    var aa = "aa"
    var bb = "bb"
    if aa > bb {
        print("aa > bb")
    }else {
      print("aa < bb")
    }
    

    打印结果如下:


    image.png

    相关文章

      网友评论

          本文标题:Swift--原生字符串

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