6.4 字符串比较
字符串比较涉及字符串大小和相等比较,以及字符串前缀和后缀的比较。
6.4.1 大小和相等比较
字符串类型与整型和浮点型一样,都可以进行相等以及大小的比较,比较的依据是Unicode编码值大小。例如下面两个字符:
Unicode:1F43C
Unicode:1F431
我们比较一下,由于1F43C要大于1F431,因此在比较时
大于
,运行以下代码并查看结果。

运行的结果是:
大于
。
当然,比较动物的大小没有太大的实际意义,但是比较ABC等传统字符是有意义的。
提示 上述代码不能使用
Character替换String类型,因为Character类型不支持>、<、>=和<=运算符。
与比较大小不同的是,我们需要比较字符串是否相等,需要注意的是,String和Character类型支持==和!=运算符,但是不支持===和!==运算符。让我们看看下面的代码:

在上述代码中,我们比较字符串变量
是否等于
字符串,结果是
,这个结果不用过多解释。代码中还比较了通过""和String()创建的两种空字符串是否相等,结果是它们也是相等的。
6.4.2 前缀和后缀比较
在字符串比较中,有时候需要比较前缀或后缀。例如,如果需要判断某个文件夹中特定类型的文件,就要判断它们的扩展名,这就需要判断它的后缀,我们可以使用字符串hasSuffix方法。如果需要判断某个文件夹中特定字符串开头的文件,就可以使用字符串的hasPrefix方法来判断前缀。
以下代码实现的是文件的查找过程:
import UIKitlet docFolder = ["java.docx","JavaBean.docx","Objecitve-C.xlsx","Swift.docx"] ①var wordDocCount = 0for doc in docFolder { ②if doc.hasSuffix(".docx") { ③++wordDocCount}}println("文件夹中Word文档个数是: \(wordDocCount)")var javaDocCount = 0for doc in docFolder {let lowercaseDoc = doc.lowercaseString ④if lowercaseDoc.hasPrefix("java") { ⑤++javaDocCount}}println("文件夹中Java相关文档个数是: \(javaDocCount)")
上述代码第①行声明并初始化了数组变量docFolder,关于数组我们会在第7章介绍。第②行代码是使用for in语句遍历数组集合,关于for in语句我们会在7.2.4节详细介绍,这个过程就是从集合docFolder中取出一个元素保存在doc变量中。第③行代码中的doc.hasSuffix(".docx")语句是判断doc字符串的结尾是否是“.docx”,“.docx”是Word文档。第④行代码doc.lowercaseString属性是获得小写字符串,这样我们在判断前缀的时候直接判断是否为“java”就可以了。与lowercaseString属性类似的还有uppercaseString属性。
