美文网首页
访问和修改字符串

访问和修改字符串

作者: 小金_1180 | 来源:发表于2018-06-21 11:01 被阅读0次

    我们可以通过调用方法,属性或者下标去访问或者修改字符串。

字符串索引

    每一个字符串都有一个相关联的索引类型,String.index,对应于字符串中每个字符的位置。

    如上一章所述,不同的字符需要不同的空间去存储,因此位了确定处于特定位置的字符,需要从起始遍历一次字符串。也就是因为这个原因,Swift中的String无法用整型值进行索引。

    使用属性startIndex可以访问字符串第一个字符的位置,使用属性endIndex可以访问字符串最后一个字符的位置。属性endIndex无法作为字符串下标的参数。如果字符串是空的,startIndex等于endIndex。

    如果希望获取一个已知索引的前面或者后面的索引,可以使用字符串提供的index(before:)方法和index(after:)方法。要访问某个远离已知索引的索引,可以使用index(_:offsetBy:)方法,而不需要多次调用前述的方法。

    可以使用下标的语法获取字符串某个特定索引的字符。

        let greeting = "Guten Tag!"

        greeting[greeting.startIndex]         // G

        greeting[greeting.index(before: greeting.endIndex)]         // !

        greeting[greeting.index(after: greeting.startIndex)]         // u

        let index = greeting.index(greeting.startIndex, offsetBy: 7)

        greeting[index]         // a

    获取超过字符串范围的索引或者不在字符串中的某个字符会导致一个运行时错误:

        greeting[greeting.endIndex] // Error

        greeting.index(after: greeting.endIndex) // Error

    通过属性indices可以获取字符串中每一个字符的索引:

        for index in greeting.indices {

            print("\(greeting[index]) ", terminator: "")

        }

        // 打印 "G u t e n  T a g ! 

NOTE:实现了Collection协议的类都提供了属性startIndex和endIndex以及方法index(before:), index(after:), 和 index(_:offsetBy:)。当然包括这里的String,还有Array,Dictionary,Set等。

插入和删除

    在字符串特定的位置插入一个字符,可以使用方法insert(_:at:),在特定的位置插入另外一个字符串,可以使用方法insert(contentsOf:at:)

        var welcome = "hello"

        welcome.insert("!", at: welcome.endIndex)

        // welcome now equals "hello!"

        welcome.insert(contentsOf: " there", at: welcome.index(before:         welcome.endIndex))

        // welcome now equals "hello there!”

    要移除一个字符串特定位置的字符,使用方法remove(at:),要移除一个特定范围内的子字符串,使用方法removeSubrange(_:)

        welcome.remove(at: welcome.index(before: welcome.endIndex))

        // welcome now equals "hello there"

        let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex

        welcome.removeSubrange(range)

        // welcome now equals "hello”

NOTE:实现了RangeReplaceableCollection协议的类都提供了方法insert(_:at:), insert(contentsOf:at:), remove(at:), and removeSubrange(_:)。当然包括这里的String,还有Array,Dictionary,Set等。

相关文章

  • 访问和修改字符串

    我们可以通过调用方法,属性或者下标去访问或者修改字符串。 字符串索引 每一个字符串都有一个相关联的索引类型...

  • 元组

    元组 序列:列表、字符串、元组 访问(通过索引访问) 修改 元组一旦声明就不能修改和删除。 同时遍历两个列表 zi...

  • swift字符知识点

    计算字符数量 访问和修改字符串 String.Index 对应着字符串中的每一个Character的位置。 sta...

  • 使用索引访问和修改字符串

    今天继续学习了极客时间 张杰 老师的关于 Swift 的课程,感觉讲的很基础很慢。不过,也只能耐心的学习了。毕竟有...

  • 4.字符串String

    目录0.字符串介绍1.字符串定义和初始化2.字符串元素访问3.字符串连接4.字符串分割5.字符串修改6.字符串判断...

  • Swift 字符串索引访问和修改字符串

    字符串索引 注意,在 Swift 中,字符串的下标并不是 Int 类型,所以不能用 1234 这样的下标来进行获取...

  • 如何使用索引访问和修改字符串

    字符串索引 每一个String值都有相关的索引类型, String.Index , 他相当于每个 Characte...

  • 如何使用索引访问和修改字符串

    字符串索引 每一个 String 值都有相关的索引类型,String.Index,它相当于每个 Character...

  • iOS | KVO与KVC深入

    KVC(key-value coding):键值编码,利用字符串类型的key值去访问/修改对象的属性值。可以访问/...

  • python的基本数据类型-字符串1

    字符串类型 声明字符串时 ,在字符串前后加上单引号 或者 双引号 举例: 字符串 下标访问 和 切片访问 字符串 ...

网友评论

      本文标题:访问和修改字符串

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