博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift 个人学习笔记 - 04: 字符串和字符
阅读量:6904 次
发布时间:2019-06-27

本文共 1686 字,大约阅读时间需要 5 分钟。

本文章纯粹是中文版的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考

以下还是有很多没看懂、不确定的地方,我会以“存疑”的注解指出。

在此感谢中文版翻译者,这极大地加快了 Swift 的学习速度。

本文地址:


Reference:

原版:

中文版:

概述

字符串在 Swift 里面其实是 String 对象,而不是基本数据类型。不过说实话,个人觉得在 Swift 里面基本数据类型和对象的差别并没有那么明显(不确定)。

字符在 Swift 里面则是 Character,到底是对象还是基本数据类型,本人目前还不是很清楚。

字符串和字符的创建和修改

创建和访问

字符串和字符的最基本创建方式,就是直接像普通变量那样创建就可以(常量我就忽略啦):

var aStr = "Hello string"var aChr = "H"var aEmptyStr = String()var anotherEmptyStr = ""

字符串可以说是对应着 Objective-C 中的 NSStringNSMutableString 类型。不过你不用担心 String 类型到底是可变还是不可变的。String 是一个值类型,底层的值变化由 Swift 自行完成,程序员只需要把它当作 mutable string 来用就可以了。

不过如果与 Foundation 搭配使用的话,那么只能对应 NSString 的方法,不能对应 NSMutableString 方法。

修改和比较

String 类型可以进行修改,比如使用 +=, +等操作符。

String 类型可以比较。如果使用 == 操作符,那么字符串使用的是称为 “规范化相等” 的规则。规范化相等的定义在后文扩展字形集群说明。

同理,Character 类型的 == `也是规范化相等。

Unicode

StringCharacter 使用 Unicode 保存数据。这与 Objective-C 是对应的 (NSString 和 unichar)。这里要说明一下这两个类型中关于 Unicode 的一些性质了。

Unicode 标量表示

一个 Unicode 标量是一个为字符或者修饰符创建的独一无二的 21 位数字。

特殊转义字符:

\0, \\, \t, \n, \r, \", \'

任意的 Unicode 标量:

\u{十六进制数}    // 十六进制数为 1~8 个十六进制字符,无需 “0x” 前缀

扩展字形集群

原文说明得很复杂很严谨,这里简单举例就好。比如一个字母 “é”,有两种表示方法:

  1. 单个 Unicode 标量 é (LATIN SMALL LETTER E WITH ACUTE, 或者 U+00E9) 表示
  2. 一个标准的字母 e ( LATIN SMALL LETTER E,或者说 U+0065),以及 COMBINING ACUTE ACCENT 标量 (U+0301) 表示

这两种表示方法,作为字符比较或者字符串比较时,都是相等的,称为规范化相等

同样的东西,在韩文中也很常用。

字符串的 Unicode 表示法

分别使用 utf8utf16unicodeScalars 来获得字符按照三种不同表示法的数组。

三者返回的分别是UInt8Uint16Uint32数组

常用方法

  • 获取指定位置的字符aStr[位置]
  • 获取字符数组String.characters
  • unicode 表示的字符串长度aStr.characters.count,或者 aStr.endIndex
  • 插入字符insert(_:at:),比如:aStr.insert("!", at:aStr.endIndex)
  • 插入字符串insert(contentsOf:at:),比如:aStr.insert(contentsOf:"!!!", at: aStr.endIndex)
  • 删除字符串remove(at:),参数是 Range 类型

下一篇

转载地址:http://wfmdl.baihongyu.com/

你可能感兴趣的文章
IOS面试题(五)
查看>>
特征提取概述
查看>>
第十周作业
查看>>
使用Python在Windows下调用Winrar备份文件
查看>>
shell学习笔记三
查看>>
我的友情链接
查看>>
纯CSS超过宽度显示省略号
查看>>
17款jQuery在线QQ客服代码分享
查看>>
ipsec在企业网中的应用
查看>>
iptables笔记
查看>>
Kali Linux 教程 之 Kali Linux 更新源
查看>>
xshell远程qemu-kvm虚拟机安装
查看>>
×××配置实例_06:分支机构到中心站点动态IPSEC ×××配置
查看>>
利用开源的驰骋工作流程引擎,生产类企业应用案例之三
查看>>
虚拟机Hyper-v目前急需解决的问题
查看>>
REDIS HGETALL按序输出结果
查看>>
heartbeat安装配置
查看>>
如果我是项目经理:那么这样子。。。
查看>>
CentOS7挂载windows共享时提示写保护
查看>>
我的友情链接
查看>>