加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift4 访问和修改字符串

发布时间:2020-12-14 05:11:49 所属栏目:百科 来源:网络整理
导读:您可以通过其方法和属性或使用下标语法来访问和修改字符串。 字符串索引 每个 String 值都有一个关联的 索引类型 , String.Index 它对应 Character 于字符串中每个值的位置。 如上所述,不同的字符可能需要不同的内存量来存储,因此为了确定哪个 Character

您可以通过其方法和属性或使用下标语法来访问和修改字符串。

字符串索引

每个String值都有一个关联的索引类型String.Index它对应Character于字符串中每个值的位置。

如上所述,不同的字符可能需要不同的内存量来存储,因此为了确定哪个Character位于特定位置,您必须从开头或结尾迭代每个Unicode标量String。因此,Swift字符串不能用整数值索引

使用该startIndex属性访问第一个Character的位置String。该endIndex属性是a中最后一个字符后的位置String。因此,该endIndex属性不是字符串下标的有效参数。如果a?String是空的,startIndex并且endIndex是相等的。

您可以使用index(before:)index(after:)方法访问给定索引之前和之后的索引String。要访问远离给定索引的索引,可以使用该index(_:offsetBy:)方法而不是多次调用其中一种方法。

您可以使用下标语法来访问Character特定String索引。

  1. let?greeting =?"Guten Tag!"
  2. greeting[greeting.startIndex]
  3. // G
  4. greeting[greeting.index(before:?greeting.endIndex)]
  5. // !
  6. greeting[greeting.index(after:?greeting.startIndex)]
  7. // u
  8. let?index =?greeting.index(greeting.startIndex,?offsetBy:?7)
  9. greeting[index]
  10. // a

尝试访问字符串范围Character之外的索引或字符串范围之外的索引将触发运行时错误。

  1. greeting[greeting.endIndex]?// Error
  2. greeting.index(after:?greeting.endIndex)?// Error

使用该indices属性可以访问字符串中各个字符的所有索引。

  1. for?index?in?greeting.indices {
  2. print("(greeting[index])?",?terminator:?"")
  3. }
  4. // Prints "G u t e n T a g ! "

注意

您可以使用startIndexendIndex属性和index(before:)index(after:)以及index(_:offsetBy:)对符合任何类型的方法Collection的协议。这包括String,如下图所示,以及集合类型,如ArrayDictionarySet

插入和删除

若要将单个字符插入到指定索引处的字符串中,请使用该insert(_:at:)方法,并在指定索引处插入另一个字符串的内容,请使用该insert(contentsOf:at:)方法。

  1. var?welcome =?"hello"
  2. welcome.insert("!",?at:?welcome.endIndex)
  3. // welcome now equals "hello!"
  4. welcome.insert(contentsOf:?" there",?at:?welcome.index(before:?welcome.endIndex))
  5. // welcome now equals "hello there!"

要从指定索引处的字符串中删除单个字符,请使用该remove(at:)方法,并删除指定范围内的子字符串,请使用以下removeSubrange(_:)方法:

  1. welcome.remove(at:?welcome.index(before:?welcome.endIndex))
  2. // welcome now equals "hello there"
  3. let?range =?welcome.index(welcome.endIndex,?offsetBy:?-6)..<welcome.endIndex
  4. welcome.removeSubrange(range)
  5. // welcome now equals "hello"

注意

您可以使用insert(_:at:)insert(contentsOf:at:)remove(at:),和removeSubrange(_:)对符合任何类型的方法RangeReplaceableCollection的协议。这包括String,如下图所示,以及集合类型,如ArrayDictionarySet

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读