Swift 3.0 学习笔记-2-字符串和Unicode

来源:互联网 发布:svd矩阵标准化 编辑:程序博客网 时间:2024/06/04 00:31

Swift 3.0 学习笔记-2-字符串和Unicode

标签(空格分隔): iOS Swift


前言:
Swift 3.0 学习笔记主要参考苹果开发者官网The Swift Programming Language (Swift 3.1)教程 以及 Swift 中文网。
更好的阅读体验请移步至:
https://www.zybuluo.com/kakadee/note/721369


  • Swift 30 学习笔记-2-字符串和Unicode
    • 字符串String
      • 1 字符串字面量
      • 2 初始化空字符串
      • 3 使用字符Characters
      • 4 计算字符数量 countElements
      • 5 字符串插值
      • 6 比较字符串
        • 字符串相等
        • 前缀后缀
        • 字符串包含
    • Unicode
      • 1 Unicode 含义
      • 2 字符串的 Unicode 表示

1. 字符串(String)

String 是一个有序的字符集合,例如 “hello, world”, “albatross”。Swift 字符串通过 String 类型来表示,也可以表示为 Character 类型值的集合。

注意:Swift 的 String 类型与 Foundation NSString 类进行了无缝桥接。如果您利用 Cocoa 或 Cocoa Touch 中的 Foundation 框架进行工作,整个 NSString API 都可以调用您创建的任意 String 类型的值,您额外还可以在任意 API 中使用本章介绍的 String 特性。您也可以在任意要求传入NSString 实例作为参数的 API 中使用 String 类型的值进行替换。

1.1 字符串字面量

字符串字面量是由双引号包裹着的具有固定顺序的文本字符集。字符串字面量可以用于为常量和变量提供初始值。

let someString = "Some string literal value"

字符串字面量可以包含以下特殊字符:

  • 转移特殊字符 \0 (空字符)、\(反斜线)、\t (水平制表符)、\n (换行符)、\r (回车符)、\” (双引号)、\’ (单引号)。
  • 一个任意的 Unicode 标量,可以表示成 \u{n}形式。n是一个0-8位的16进制数。
let wiseWords = "\"我是要成为海贼王的男人\" - 路飞"// "我是要成为海贼王的男人" - 路飞let dollarSign = "\u{24}"        // $,  Unicode scalar U+0024let blackHeart = "\u{2665}"      // ♥,  Unicode scalar U+2665let sparklingHeart = "\u{1F496}" // ��, Unicode scalar U+1F496

1.2 初始化空字符串

var emptyString = ""               // 空字符串字面量var anotherEmptyString = String()  // 初始化 String 实例// 两个字符串均为空并等价。

1.3 使用字符(Characters)

Swift 的 String 类型表示特定序列的字符值的集合。每一个字符值代表一个 Unicode 字符。您可利用 for-in 循环来遍历字符串中的每一个字符:

for character in "Dog!" {    print(character)}// D// o// g// !

1.4 计算字符数量 (countElements)

通过调用全局 countElements 函数并将字符串作为参数进行传递可以获取该字符串的字符数量。

let unusualMenagerie = "Koala ��, Snail ��, Penguin ��, Dromedary ��"print("unusualMenagerie has \(countElements(unusualMenagerie)) characters") // prints "unusualMenagerie has 40 characters" 

1.5 字符串插值

字符串插值是一种全新的构建字符串的方式,可以在其中包含常量、变量、字面量和表达式。您插入的字符串字面量的每一项都被包裹在以反斜线为前缀的圆括号中:

let multiplier = 3let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"// message is "3 times 2.5 is 7.5" 

注意:插值字符串中写在括号中的表达式不能包含非转义双引号 (“) 和反斜杠 (),并且不能包含回车或换行符。

1.6 比较字符串

Swift 提供了三种方式来比较字符串的值:字符串相等,前缀相等和后缀相等。
字符串相等

字符串相等

如果两个字符串以同一顺序包含完全相同的字符,则认为两者字符串相等。

let a = "sdfwe"let b = "dfew"let isEqual = a == b // falsea.contains("dfw")

前缀后缀

a.hasPrefix("sdf") // trueb.hasSuffix("dew") // false

字符串包含

a.contain("df") // true

2 Unicode

Unicode 是文本编码和表示的国际标准。它使您可以用标准格式表示来自任意语言几乎所有的字符,并能够对文本文件或网页这样的外部资源中的字符进行读写操作。

2.1 Unicode 含义

Unicode 中每一个字符都可以被解释为一个或多个 unicode 标量。字符的 unicode 标量是一个唯一的21位数字(和名称),例如U+0061 表示小写的拉丁字母A (“a”),U+1F425 表示正面站立的鸡宝宝 (“��”)

当 Unicode 字符串被写进文本文件或其他存储结构当中,这些 unicode 标量将会按照 Unicode 定义的集中格式之一进行编码。其包括 UTF-8 (以8位代码单元进行编码) 和 UTF-16 (以16位代码单元进行编码)。

2.2 字符串的 Unicode 表示

Swift 提供了几种不同的方式来访问字符串的 Unicode 表示。

  • UTF-8 代码单元集合 (利用字符串的 utf8 属性进行访问)
let dogString = "Dog!��" for codeUnit in dogString.utf8 {    print("\(codeUnit) ")}print("\n")// 68 111 103 33 240 159 144 182 

上面的例子中,前四个10进制代码单元值 (68, 111, 103, 33) 代表了字符 D o g 和 ! ,他们的 UTF-8 表示与 ASCII 表示相同。后四个代码单元值 (240, 159, 144, 182) 是 狗脸表情 的4位 UTF-8 表示。

  • UTF-16 代码单元集合 (利用字符串的 utf16 属性进行访问)
for codeUnit in dogString.utf16 {    print("\(codeUnit) ")}print("\n")// 68 111 103 33 55357 56374 
  • 21位的 Unicode 标量值集合 (利用字符串的 unicodeScalars 属性进行访问)
    每一个 UnicodeScalar 拥有一个值属性,可以返回对应的21位数值,用 UInt32 来表示。
for scalar in dogString.unicodeScalars {    print("\(scalar.value) ")}print("\n")// 68 111 103 33 128054 
0 0
原创粉丝点击