Swift字符串和字符和控制条件(三)

Swift 的 String 类型与 Foundation NSString 类进行了无缝桥接。Foundation 还对 String 进行扩展使其可以访问 NSString 类型中定义的方法。这意味着调用那些 NSString 的方法,你无需进行任何类型转换。

如果你的代码中,多行字符串字面量包含换行符的话,则多行字符串字面量中也会包含换行符。如果你想换行,以便加强代码的可读性,但是你又不想在你的多行字符串字面量中出现换行符的话,你可以用在行尾写一个反斜杠(\)作为续行符。

你可以用 append() 方法将一个字符附加到一个字符串变量的尾部:

因此,Swift 的字符串不能用整数(integer)做索引

使用 startIndex 属性可以获取一个 String 的第一个 Character 的索引。使用 endIndex 属性可以获取最后一个 Character 的后一个位置的索引。因此,endIndex 属性不能作为一个字符串的有效下标。如果 String 是空串,startIndex 和 endIndex 是相等的。

使用 indices 属性会创建一个包含全部索引的范围(Range),用来在一个字符串中访问单个字符。

insert(_:at:)、insert(contentsOf:at:)、remove(at:) 和 removeSubrange(_:)

而 String 和 SubString 的区别在于性能优化上,SubString 可以重用原 String 的内存空间,或者另一个 SubString 的内存空间,SubString不适合长期存储 ---因为它重用了原 String 的内存空间,原 String 的内存空间必须保留直到它的 SubString 不再被使用为止。

你可以通过遍历 String 的 utf8 属性来访问它的 UTF-8 表示

你可以通过遍历 String 值的 unicodeScalars 属性来访问它的 Unicode 标量表示。

集合类型

Swift 语言提供 Arrays、Sets 和 Dictionaries 三种基本的集合类型用来存储集合数据。数组(Arrays)是有序数据的集。集合(Sets)是无序无重复数据的集。字典(Dictionaries)是无序的键值对的集。

Swift 语言中的 Arrays、Sets 和 Dictionaries 中存储的数据值类型必须明确。这意味着我们不能把错误的数据类型插入其中。同时这也说明你完全可以对取回值的类型非常放心。


数组不可以用下标访问的形式在数组尾部添加新项。

集合:该类型必须是可哈希化地--也就是说,该类型必须提供一个方法来计算它的哈希值。一个哈希值是Int类型的,相等的对象哈希值必须相同,比如a==b,因此必须a.hashValue == b.hashValue.

一个 Set 类型不能从数组字面量中被单独推断出来,因此 Set 类型必须显示声明。然而,由于Swift的类型推荐功能,如果你想使用一个数组字面量构造一个 Set 并且该数组字面量中的所有元素类型相同,那么你无须写出 Set 的具体类型。

使用“是否相等”运算符(==)来判断两个集合是否包含全部相同的值。

使用 isSubset(of:) 方法来判断一个集合中的值是否也被包含在另外一个集合中。

使用 isSuperset(of:) 方法来判断一个集合中包含另一个集合中所有的值。

使用 isStrictSubset(of:) 或者 isStrictSuperset(of:) 方法来判断一个集合是否是另外一个集合的子集合或者父集合并且两个集合并不相等。

使用 isDisjoint(with:) 方法来判断两个集合是否不含有相同的值(是否没有交集)。

像if 语句一样, guard 的执行取决于一个表达式的布尔值。我们可以使用 guard 语句来要求条件必须为真时,以执行 guard 语句后的代码。不同于 if 语句,一个 guard 语句总是有一个 else 从句,如果条件不为真则执行 else 从句中的代码。

相比于可以实现同样功能的 if 语句,按需使用 guard 语句会提升我们代码的可读性。它可以使你的代码连贯的被执行而不需要将它包在 else 块中,它可以使你在紧邻条件判断的地方,处理违规的情况。

检测API可用性 :可用性条件 #available(,,*)在运行时判断调用的API是否可用。最后一个参数 * 是必须的,用于指定在所有其它平台中,

你可能感兴趣的:(Swift字符串和字符和控制条件(三))