美文网首页
10 Swift中的字符串

10 Swift中的字符串

作者: 为了自由的白菜 | 来源:发表于2023-02-28 09:09 被阅读0次

如何在Swift中创建和初始化字符串

初始化空串

  • 字面量
  • 初始化器语法
  • isEmpty检查是否位空串
image-20230219164802288.png

字面量

  • 字符串字面量是被双引号(")包裹的固定顺序文本字符
  • Swift会为str常量推断类型位String
image-20230219164955512.png

多行字面量

  • 多行字符串字面量是用三个双引号引起来的一系列字符
  • 多行字符串字面量把所有行包括在引号内,开始和结束默认不会有换行符
  • 当你的代码中在多行字符串字面量里包含了换行,那个换行符同样会成为字符串里的值。如果你想要使用换行符来让你的代码易读,却不想让换行符成为字符串的值,那就在那些行的末尾使用反斜杠()
image-20230219165443923.png
  • 要让多行字符串字面量起始或结束于换行,就在第一或最后一行写一个空行
  • 多行字符串可以缩进以匹配周围的代码。双引号(""")前的空格会告诉Swift其他行前应该有多少空白是需要忽略的
  • 如果你在某行的空格超过了结束的双引号("""),那么这些空格会被包含
image-20230219165944111.png

字符串里的特殊字符

  • 转义特殊字符\0(空字符),\\(反斜杠),\t(水平制表符),\n(换行符),\r(回车符),\"(双引号)以及\'(单引号)

  • 任意的Unicode标量,写作\u{n},里面的n是一个1-8位的16进制数字,其值是合法Unicode值

  • 可以在多行字符串字面量中包含双引号(")而不需转义。要在多行字符串中包含文本""",转义至少一个双引号

image-20230219170529494.png

扩展字符串分隔符(Raw String)

  • 在字符串字面量中放置扩展分隔符来在字符串中包含特殊字符而不让它们真的生效
  • 把字符串放在双引号(")内并由井号(#)包裹
  • 如果字符串里有“#则首尾需要两个##
  • 如果你需要字符串中某个特殊符号的效果,使用匹配你包裹的井号数量的井号并在前面写转义符号\
image-20230219170955993.png

Swift字符串的常见操作

字符串的可变性

  • var 指定的可以修改
  • let 指定的不可修改
  • 对比Objective-C(NSString和NSMutableString)
image-20230219174028342.png

字符串是值类型

  • String值在传递给方法或者函数的时候会被复制过去
  • 赋值给常量或者变量的时候也是一样
  • Swift编译器优化了字符串使用的资源,实际上拷贝只会在确定需要的时候才进行
image-20230219174250171.png

操作字符

  • fon-in循环遍历String中的每一个独立的Character
  • Character类型
  • String值可以通过传入Character数组来构造
image-20230219174457640.png

字符串的拼接

  • 使用加运算符(+)创建新字符串
  • 使用加赋值符号(+=)在已经存在的String值末尾追加一个String值
  • 使用String类型的append()方法来可以给一个String变量的末尾追加Character值

字符串插值

  • 字符串插值是一种从混合常量、变量、字面量和表达式的字符串字面量构造新String值得方法
  • 每一个你插入到字符串字面量的元素都要被一对圆括号包裹,然后使用反斜杠前缀
  • 类似于NSString的stringWithFormat方法,但是更加简单,更强大
image-20230219174958322.png
  • 可以在扩展字符串分隔符中创建一个包含在其他情况下会被当作字符串插值的字符
  • 要在使用扩展分隔符中使用字符串插值,在反斜杠后使用匹配首尾井号数量的井号
image-20230219175204363.png

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

字符串索引

  • 每一个String值都有相关的索引类型,String.Index,它相当于每个Character在字符串的位置
  • startIndex属性来访问String中第一个Character的位置。endIndex属性就是String中最后一个字符后的位置
  • endIndex属性并不是字符串下标脚本的合法实际参数
  • 如果String为空,则startIndex与endIndex相等
image-20230219180237854.png
  • 使用index(before:)和index(after:)方法来访问给定索引的前后
  • 要访问给定索引更远的索引,你可以使用index:(_:offsetBy:)
  • 使用indices属性来访问字符串中每个字符的索引
image-20230219180515733.png

插入

  • 插入字符,使用insert(_:at:)方法
  • 插入另一个字符串的内容到特定的索引,使用insert(contentsOf:at:)方法
image-20230219180735020.png

删除

  • 移除字符,使用remove(at:)方法
  • 移除一小段特定范围的字符串,使用removeSubrange(_:)方法
image-20230219181023077.png

如何在Swift中获取子串和进行字符串比较

子字符串

  • 使用下标或者类似perfix(_:)的方法得到的子字符串是Substring类型
  • Substring拥有String的大部分方法
  • SubString可以转成String类型
image-20230219181933035.png
  • 子字符串重用一部分原字符串的内存
  • 修改字符串或者子字符串之前都不需要花费拷贝内存的代价
  • String和Substring都遵循StringProtocol协议,也就是说它基本上鞥很方便地兼容所有接受StringProtocol值得字符串操作函数
image-20230219182311586.png

字符串的比较

  • 字符串和字符相等性(==和!=)
  • 前缀相等性hasPrefix(_:)
  • 后缀相等性hasSuffix(_:)
image-20230219182528457.png

相关文章

  • Swift 3.x(字符串,数组,字典,元组,可选类型)

    Swift 字符串介绍 OC和Swift中字符串的区别 OC中字符串类型是NSString ,在Swift...

  • swift-基础-基本语法2

    字符串 Swift中不用写@ Swift中的字符串不是对象,而是个结构体 Swift中的字符串的性能比OC中高 虽...

  • Programming in Swift 编程指南

    Swift 基础篇 Swift 语言基础 Swift 中的字符串和集合 Swift 中的类 Swift 中的结构体...

  • Swift字符串

    字符串简介在OC中定义字符串 @"". Swift中用""(注意点:OC中的字符串是NSString,Swift...

  • Swift 6、字符串的使用

    1、 OC中字符串NSString,在swift中字符串是String 2、 OC中@"",在swift中"" 使...

  • Swift--字符串--02

    字符串基础 字符串在OC与Swift中的区别:在OC中字符串类型是NNString,在Swift中字符串类型是St...

  • iOS swift-字符串

    OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC...

  • Swift笔记<三>字符串

    1.字符串的基本使用 OC与Swift中字符串的区别OC中字符串类型是NSString,Swift中字符串类型是S...

  • Swift基础 - 字符串

    简单拼接 字符串遍历 字符串长度 格式化字符串 Swift字符串与OC中字符串对比 Swift中是String类型...

  • 10.Swift中字符串的使用

    OC和swift中字符串的区别: 1.在OC中字符串的类型是NSString,swift中字符串的类型是Strin...

网友评论

      本文标题:10 Swift中的字符串

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