zoukankan      html  css  js  c++  java
  • Swift语法基础:14

    接着前面的字符串开始讲:


    1. 使用字符

    wift 的 String 类型表示特定序列的字符值的集合。每一个字符值代表一个 Unicode 字符。

    可以用 for-in 循环来遍历字符串中的每一个字符:

    for character in "Dog!��" {
        println(character)
    }
    // 打印出来的结果: D
    o
    g
    !
    ��

    打印出来的结果

    另外,通过标明一个 Character 类型注解并通过字符字面量进行赋值,可以建立一个独立的字符常量或变量:

    let yenSign: Character = "¥"

    2.计算字符数量

    在字符和字符串中, 有一个函数是可以打印字符的数量, 比如:

    var variableString = "Horse"
    variableString += " and carriage"
    println("(countElements(variableString))")
    // 打印出来的结果: 18
    
    let unusualMenagerie = "Koala ��, Snail ��, Penguin ��, Dromedary ��"
    println("unusualMenagerie has (countElements(unusualMenagerie)) characters")
    // 打印出来的结果: unusualMenagerie has 40 characters

    打印字符

    PS:
    1.不同的 Unicode 字符以及相同 Unicode 字符的不同表示方式可能需要不同数量的 内存空间来存储,所以 Swift 中的字符在一个字符串中表示并不一定占用相同的内存空 间。因此,字符串的长度不得不通过迭代字符串中每一个字符的长度来进行计算。如果 您正在处理一个长字符串,需要注意 countElements 函数必须遍历字符串中的字符,以 精准计算字符串的长度。

    2.另外需要注意的是通过 countElements 返回的字符数量并不总是与包含相同字符的 NSString 的 length 属性相同。NSString 的 length 属性是基于利用 UTF-16 表示的十 六位 code units 数目,而不是基于 Unicode 字符。为了解决这个问题,NSString 的 length 属性在被 Swift 的 String 值访问时会被称为 utf16count。


    3.连接字符串和字符

    和前面一样, 字符和字符串也可以加在一起的, 但这里要做一些特殊的处理, 比如:

    let string1 = "Hello"
    let string2 = " World"
    
    let character1: Character = "!"
    let character2: Character = "?"
    
    var welcome = string1 + string2
    welcome.append(character1)
    println(welcome)
    // 打印出来的结果: Hello World!

    也可以使用加法赋值运算:

    var characterPlusCharacter = string1
    characterPlusCharacter += string2
    println(characterPlusCharacter)
    // 打印出来的结果: Hello World

    4.字符串插值:

    字符串插值是一种全新的构建字符串的方式,可以在其中包含常量、变量、字面量和表达式, 比如:

    let multiplier = 3
    let message = "(multiplier) times 2.5 is (Double(multiplier) * 2.5)"
    println(message)
    // 打印出来的结果: 3 times 2.5 is 7.5

    PS: 插值字符串中写在括号中的表达式不能包含非转义双引号 ( “” ) 和反斜杠 ( ) 并且不能包含回车或换行符。


    5.比较字符串

    Swift 供了三种方式来比较字符串的值:字符串相等,前缀相等和后缀相等。

    字符串相等:

    let quotation = "We're a lot alike, you and I."
    let sameQuotation = "We're a lot alike, you and I."
    if quotation == sameQuotation {
        println("These two strings are considered equal")
    }
    // 打印出来的结果: These two strings are considered equal

    前后缀相等:

    let romeoAndJuliet = [
        "Act 1 Scene 1: Verona, A public place",
        "Act 1 Scene 2: Capulet's mansion",
        "Act 1 Scene 3: A room in Capulet's mansion",
        "Act 1 Scene 4: A street outside Capulet's mansion",
        "Act 1 Scene 5: The Great Hall in Capulet's mansion",
        "Act 2 Scene 1: Outside Capulet's mansion",
        "Act 2 Scene 2: Capulet's orchard",
        "Act 2 Scene 3: Outside Friar Lawrence's cell",
        "Act 2 Scene 4: A street in Verona",
        "Act 2 Scene 5: Capulet's mansion",
        "Act 2 Scene 6: Friar Lawrence's cell"
    ]
    
    var act1SceneCount = 0
        for scene in romeoAndJuliet {
        if scene.hasPrefix("Act 1 ") {
            ++act1SceneCount
        }
    }
    println("There are (act1SceneCount) scenes in Act 1")
    // 打印出来的结果: There are 5 scenes in Act 1
    var mansionCount = 0
    var cellCount = 0
    for scene in romeoAndJuliet {
        if scene.hasSuffix("Capulet's mansion"){
            ++mansionCount
        } else if scene.hasSuffix("Friar Lawrence's cell"){
            ++cellCount
        }
    }
    println("(mansionCount) mansion scenes; (cellCount) cell scenes")
    // 打印出来的结果: 6 mansion scenes; 2 cell scenes

    6.大小写字符串

    在Swift当中也有一个函数, 可以直接把字符串变成全部大写字母, 或者全部小写字母:

    let normal = "Could you help me, please?"
    let shouty = normal.uppercaseString
    let whispered = normal.lowercaseString
    
    println("(shouty), (whispered)")
    // 打印出来的结果:COULD YOU HELP ME, PLEASE?, could you help me, please?

    好了, 这次我们就讲到这里, 下次我们继续~

  • 相关阅读:
    Open vSwitch流表应用实战
    《智慧网络协同组织机理》智慧网络可编程技术 小记
    DS实验题 sights
    switch parser.p4源码
    OpenFlow.p4 源码
    Mininet实验 OpenFlow1.3协议基于Mininet部署与验证
    Ubuntu/linux 安装 kernel-devel
    yolo
    ssd
    铁道栏杆的项目做的事情
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4333124.html
Copyright © 2011-2022 走看看