Swift - 字符串

  • 简述

    Swift 4 中的字符串是字符的有序集合,例如“Hello, World!” 它们由 Swift 4 数据类型表示String,这又代表了一组值 Character 类型。
  • 创建字符串

    您可以通过使用字符串文字或创建 String 类的实例来创建字符串,如下所示 -
    
    // String creation using String literal
    var stringA = "Hello, Swift 4!"
    print( stringA )
    // String creation using String instance
    var stringB = String("Hello, Swift 4!")
    print( stringB )
    //Multiple line string
    let stringC = """
    Hey this is a
    example of multiple Line
    string by tutorialsPoint 
    """
    print(stringC)
    
    上述代码编译执行后,会产生如下结果
    
    Hello, Swift 4!
    Hello, Swift 4!
    Hey this is a
    example of multiple Line
    string by tutorialsPoint
    
  • 空字符串

    您可以通过使用空字符串文字或创建 String 类的实例来创建空字符串,如下所示。您还可以使用 Boolean 属性检查字符串是否为空isEmpty.
    
    // Empty string creation using String literal
    var stringA = ""
    if stringA.isEmpty {
       print( "stringA is empty" )
    } else {
       print( "stringA is not empty" )
    }
    // Empty string creation using String instance
    let stringB = String()
    if stringB.isEmpty {
       print( "stringB is empty" )
    } else {
       print( "stringB is not empty" )
    }
    
    当上面的代码被编译和执行时,它会产生以下结果 -
    
    stringA is empty
    stringB is empty
    
  • 字符串常量

    您可以指定您的字符串是否可以通过将其分配给变量来修改(或变异),或者通过使用将其分配给常量来指定为常量 let 关键字如下所示 -
    
    // stringA can be modified
    var stringA = "Hello, Swift 4!"
    stringA + = "--Readers--"
    print( stringA )
    // stringB can not be modified
    let stringB = String("Hello, Swift 4!")
    stringB + = "--Readers--"
    print( stringB )
    
    当上面的代码被编译和执行时,它会产生以下结果 -
    
    Playground execution failed: error: <EXPR>:10:1: error: 'String' is not
    convertible to '@lvalue UInt8'
    stringB + = "--Readers--"
    
  • 字符串插值

    字符串插值是一种通过将常量、变量、文字和表达式的值包含在字符串文字中来构造新字符串值的方法。
    您插入到字符串文字中的每个项目(变量或常量)都包含在一对括号中,并以反斜杠为前缀。这是一个简单的例子 -
    
    var varA = 20
    let constA = 100
    var varC:Float = 20.0
    var stringA = "\(varA) times \(constA) is equal to \(varC * 100)"
    print( stringA )
    
    当上面的代码被编译和执行时,它会产生以下结果 -
    
    20 times 100 is equal to 2000.0
    
  • 字符串连接

    您可以使用 + 运算符连接两个字符串、一个字符串和一个字符或两个字符。这是一个简单的例子 -
    
    let constA = "Hello,"
    let constB = "World!"
    var stringA = constA + constB
    print( stringA )
    
    当上面的代码被编译和执行时,它会产生以下结果 -
    
    Hello,World!
    
  • 字符串长度

    Swift 4 字符串没有 length属性,但您可以使用全局 count() 函数来计算字符串中的字符数。这是一个简单的例子 -
    
    var varA = "Hello, Swift 4!"
    print( "\(varA), length is \((varA.count))" )
    
    当上面的代码被编译和执行时,它会产生以下结果 -
    
    Hello, Swift 4!, length is 15
    
  • 字符串比较

    您可以使用 == 运算符来比较两个字符串变量或常量。这是一个简单的例子 -
    
    var varA = "Hello, Swift 4!"
    var varB = "Hello, World!"
    if varA == varB {
       print( "\(varA) and \(varB) are equal" )
    } else {
       print( "\(varA) and \(varB) are not equal" )
    }
    
    当上面的代码被编译和执行时,它会产生以下结果 -
    
    Hello, Swift 4! and Hello, World! are not equal
    
  • 字符串迭代

    在 swift 4 中,字符串也是值的集合,因此我们可以使用循环遍历字符串。-
    
    for chars in "ThisString" {
       print(chars, terminator: " ")
    }
    
    当上面的代码被编译和执行时,它会产生以下结果 -
    
    T h i s S t r i n g
    
  • Unicode 字符串

    您可以通过迭代字符串的 utf8 和 utf16 属性来访问字符串的 UTF-8 和 UTF-16 表示,如下例所示 -
    
    var unicodeString = "Dog???"
    print("UTF-8 Codes: ")
    for code in unicodeString.utf8 {
       print("\(code) ")
    }
    print("\n")
    print("UTF-16 Codes: ")
    for code in unicodeString.utf16 {
       print("\(code) ")
    }
    
    当上面的代码被编译和执行时,它会产生以下结果 -
    
    UTF-8 Codes: 
    68 
    111 
    103 
    63 
    63 
    63 
    UTF-16 Codes: 
    68 
    111 
    103 
    63 
    63 
    63 
    
  • 字符串函数和运算符

    Swift 4 支持多种与字符串相关的方法和运算符 -
    序号 功能/运算符和目的
    1
    isEmpty
    一个布尔值,用于确定字符串是否为空。
    2
    hasPrefix(prefix: String)
    用于检查给定参数字符串是否作为字符串前缀存在的函数。
    3
    hasSuffix(suffix: String)
    用于检查给定参数字符串是否作为字符串后缀存在的函数。
    4
    toInt()
    将数字字符串值转换为整数的函数。
    5
    count()
    用于计算字符串中字符数的全局函数。
    6
    utf8
    返回字符串的 UTF-8 表示的属性。
    7
    utf16
    返回字符串的 UTF-16 表示的属性。
    8
    unicodeScalars
    返回字符串的 Unicode 标量表示的属性。
    9
    +
    连接两个字符串、一个字符串和一个字符或两个字符的运算符。
    10
    +=
    将字符串或字符附加到现有字符串的运算符。
    11
    ==
    运算符来确定两个字符串的相等性。
    12
    <
    运算符执行字典比较以确定一个字符串的计算结果是否小于另一个。
    13
    startIndex
    获取字符串起始索引处的值。
    14
    endIndex
    获取字符串结束索引处的值。
    15
    Indices
    一一访问索引。即字符串的所有字符一个一个。
    16
    insert("Value", at: position)
    在一个位置插入一个值。
    17
    remove(at: position)
    removeSubrange(range)
    删除某个位置的值,或从字符串中删除一系列值。
    18
    reversed()
    返回字符串的反转