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 UIKit
let docFolder = [
"java.docx",
"JavaBean.docx",
"Objecitve-C.xlsx",
"Swift.docx"
] ①
var wordDocCount = 0
for doc in docFolder { ②
if doc.hasSuffix(".docx") { ③
++wordDocCount
}
}
println("文件夹中Word文档个数是: \(wordDocCount)")
var javaDocCount = 0
for 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
属性。