//一. 字符串(Strings)和字符(Characters)
//Swift中导入Foundation框架可以使用NSString 的方法
//1. 单行String, 用双引号
let someString = "Some string literal value"
//2. 多行String, 三个双引号.每行语句后有换行符,不换行用 \,空换行用空白行
//结束符缩进不能多于内容,否则会报错。和结束符缩进相同的字符串,前边的空格自动忽略,比结束符缩进多的字符串前边的空格会显示
let quotation = """
The White Rabbit put on his spectacles. "Where shall I begin, \
please your Majesty?" he asked.
"Begin at the beginning," the King said gravely, "and go on \
till you come to the end; then stop."
"""
print(quotation)
//3. 字符串中的特殊字符
//字符串可以包含的特殊字符:\0(null), \\, \t(水平制表符), \n, \r, \", \'. 统一码Unicode,写作 "\u{n}",n是1-8位的十六进制数, 返回值对应一个合法的UIcode码字符
let wiseWords = "\"Imagination is more important than knowledge\" - Einstein" //包含双引号
let dollarSign = "\u{24}"; print(dollarSign) //输出美元字符
let blackHeart = "\u{2665}"; print(blackHeart) //黑桃心
let sparklingHeart = "\u{1F496}"; print(sparklingHeart)
//多行字符串中可以直接使用双引号,使用三引号时,至少用一个 \ 将三引号隔开,如下
let threeDoubleQuotationMarks = """
Escaping the first quotation mark \"""
Escaping all three quotation marks \"\"\"
"""
print(threeDoubleQuotationMarks)
//4. 字符串初始化
//(1) 用空字符串赋值
var emptyString = ""
//(2)用语法赋值
var anothEmptyString = String()
//判断是否为空,使用isEmpty属性
if emptyString.isEmpty {
print("Nothing to see here")
}
//可变字符串用 var, 不可变字符串用let
var variableString = "Horse"
variableString += " and carriage" //variableString is now "Horse and carriage"
let constantString = "Highlander"
//constantString += " and another Highlander" // this reports a compile-time error - a constant string cannot be modified
//Strings 是值类型Value Types
//创建一个新字符串后,当它被传给函数或者赋值给常量变量,String的值都会被拷贝一份。保证了字符串在传递过程中不会被修改
//5. 字符(Characters)
//(1) 创建字符,用type标注类型
let exclamationMark: Character = "!"
//(2) 遍历字符串获取字符串的每一个字符
for character in "Dog!" {
print(character)
}
// D
// o
// g
// !
//(3) 可以用字符串数组为字符串赋值
let catCharacters: [Character] = ["C", "a", "t", "!"]
let catString = String(catCharacters); print(catString) // print "Cat!"
//6. 字符串和字符的连接
//字符串可以拼接字符,字符后不能拼接字符或字符串,因为字符只能有一个字符
//(1) 用 +
let string1 = "hello"
let string2 = "there"
var welcome = string1 + string2
//(2) 用 +=
var instruction = "look over"
instruction += string2
//(3) 字符串拼接字符,使用String的 append() 方法
welcome.append(exclamationMark)
//(4) 拼接两个多行字符串,想要每行都换行,多行字符串最后一行为空
let goodStart = """
one
two
"""
let end = """
three
"""
print(goodStart + end)
// one
// two
// three
//7. 字符串插入(String Interpolation)
//插入字符串用 \()
let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)" // multiplier 是Int 类型, 2.5 是Double类型,* 不能用于两种类型相乘