字符和字符串
1. Swift中的字符串是用String关键词来定义的,同时它也是一些字符的集合,用Character定义。
字符串常量可以包括下面这些特殊字符:
空字符\0,反斜杠\,制表符\t,换行符\n,回车符\r,双引号\”和单引号\’
单字节Unicode字符,\xnn,其中nn是两个十六进制数
双字节Unicode字符,\unnnn,其中nnnn是四个十六进制数
四字节Unicode字符,\Unnnnnnnn,其中nnnnnnnn是八个十六进制数
2. 初始化一个空串(两种)
var emptyString = ""
if emptyString.isEmpty{
println("Nothing to see here")
}
//Nothing to see here
var emptyString = String()
if emptyString.isEmpty{
println(emptyString+"is empty")
}
//is empty
3. 变长字符串
如果使用var关键词定义的字符串即为可修改的变长字符串,而let关键词定义的字符串是常量字符串,不可修改。
var variableString = "Horse"
variableString += " and carriage"
println(variableString)
//Horse and carriage
4. 字符串不是指针,而是实际的值
在Swift中,一个String类型就是一个实际的值,当定义一个新的String,并且将之前的String值拷贝过来的时候,是实际创建了一个相等的新值,而不是仅仅像指针那样指向过去。
同样在函数传递参数的时候,也是传递的实际值,并且创建了一个新的字符串,后续的操作都不会改变原有的String字符串。
5. 字符
Swift的字符串String就是由字符Character组成的,每一个Character都代表了一个特定的Unicode字符。通过for-in循环,可以遍历字符串中的每一个字符:
for character in "fuck" {
println(character)
}
//f
//u
//c
//k
定义一个单独的字符:
let oneWord : Character = "s"
println(oneWord)
//s
6. 字符计数
使用全局函数countElements可以计算一个字符串中字符的数量:
let str = "apple,orange,banana"
println("str has \(countElements(str)) character")
//str has 19 character
一个空格也算一个字符。
7. 组合使用字符和字符串
String和Character类型可以通过使用+号相加来组合成一个新的字符串
let string1 = "hello"
let string2 = " there"
let character1: Character = "!"
let character2: Character = "?"
let stringPlusCharacter = string1 + character1
println(stringPlusCharacter) //hello!
let stringPlusString = string1 + string2
println(stringPlusString) //hello there
let characterPlusCharacter = character1 + character2
println(characterPlusCharacter)//!?
let characterPlusString = character1 + string1
println(characterPlusString) //!hello
也可以使用+=号来组合
var instruction = "look over"
let string2 = " there"
instruction += string2
println(instruction) //look over there
8. 使用字符串生成新串
let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
println(message) // 3 times 2.5 is 7.5
9. 字符串比较
Swift提供三种方法比较字符串的值:字符串相等,前缀相等,和后缀相等
字符串相等:当两个字符串的包含完全相同的字符时,他们被判断为相等。
let quotation = "i knew you were trouble"
let sameQuotation = "i knew you were trouble"
if quotation == sameQuotation { println("These two strings are considered equal") }
// These two strings are considered equal
前缀(hasPrefix)相等和后缀(hasSuffix)相等:
使用string 类的两个方法hasPrefix和hasSuffix,来检查一个字符串的前缀或者后缀是否包含另外一个字符串,它需要一个String类型型的参数以及返回一个布尔类型的值。两个方法都会在原始字符串和前缀字符串或者后缀字符串之间做字符与字符之间的。
let quotation = "i knew you were trouble"
let prefiQuotation = "i" // knew you were trouble
if quotation.hasPrefix(prefiQuotation) { println("i is prefix") }
//<span style="font-weight: bold; font-family: 'Microsoft Yahei';">i is prefix</span>
let quotation = "i knew you were trouble"
let suffixQuotation = "trouble" // knew you were trouble
if quotation.hasSuffix(suffixQuotation) { println("trouble is suffix") }
// trouble is suffix
let quotation = "i knew you were trouble"
let suffixQuotation = "i" // knew you were trouble
if quotation.hasSuffix(suffixQuotation) { println("i is suffix") }//no result
大小写字符串
可以从一个String类型的uppercaseString
和 lowercaseString中获得一个字符串的大写或小写。
let sentence = "ASssffarqfaSDASFAsafd"
let shoutly = sentence.uppercaseString
let whispered = sentence.lowercaseString
println("shoutly is \(shoutly) and whispered is \(whispered)")
//shoutly is ASSSFFARQFASDASFASAFD and whispered is asssffarqfasdasfasafd
10. Unicode
Unicode是编码和表示文本的国际标准。它几乎可以显示所有语言的所有字符的标准形态。还可以从类似于文本文件或者网页这样的外部源文件中读取和修改他们的字符。
每一个Unicode字符都能被编码为一个或多个unicode
scalar。一个unicode scalar是一个唯一的21位数(或者名称),对应着一个字符或者标识。例如 U+0061是一个小写的A (“a”), 或者U+1F425是一个面向我们的黄色小鸡