• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift4.2 访问和修改字符串

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

字符串索引

每个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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift 函数提前返回发布时间:2022-07-14
下一篇:
Swift几行代码解决UITableView空数据视图问题发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap