1.字符串是有序的字符集合,或者叫文本,如“我已经使用了洪荒之力”
2.String 是字符串类型,Character是字符类型
3.2个字符串可以通过+来连接
通过字符串插值可合成一个长字符串
/*
字符串字面量 包含双引号的值成为字符串字面量
“我要使出洪荒之力了”
空字符串:用“”字面量
*/
var a = ""
var b = " "
// 判断字符串是否为空
a.isEmpty
b.isEmpty
/*
字符
用Character类型来定义字符串
*/
var c:Character = "我"
// var d:Character = "哈哈" 不能转换成Character类型
// 可以对一个字符串的characters属性进行循环,来访问其中单个字符
let words = "小波说雨燕"
words.characters
for word in words.characters {
print(word)
}
// 链接字符串和字符 +
let x = "洪荒"
let y = "少女"
let z = "傅园慧"
var famous = x + y + z
// 向字符串添加字符 append
let num:Character = "1"
famous.append(num)
// 字符串插值:组合 常量/变量/字面量/表达式 成一个长字符串
let name = "小波"
let type = "G"
let number = 11
let price = 158.5
let 订票提示 = "\(name)先生,您订购了\(type)\(number)的往返票,需支付\(price * 2)元"
// 特殊字符 \0 \ \t \n \r ' " \u{n}
// Unicode: 一种国际化文字编码标准,几乎可以兼容所有语言的文字和书写系统,除了可以直接打出Unicode字符,还可以使用数字化的量,叫Unicode标量。\u{1F425}
// http://www.asahi-net.or.jp/~ax2s-kmtn/ref/unicode/cjku_klist.html
"\u{1F425}"
// 字符计数 使用字符串characters属性的count来获取字符个数
let t = "小波说雨燕abc"
t.characters.count
let s = " "
s.characters.count
s.isEmpty
// 修改字符串 通过索引
// 字符串索引:索引对应其中每一个字符的位置
let w:String = "小波说雨燕 3天学会Swift 3,www.xiaoboswift.com"
// 首字符索引 startIndex,尾字符后一个位置 endIndex
w.startIndex
w.endIndex
// 确定索引后,用下标来访问相应字符
w[w.startIndex]
// 用字符串的字符数组的index(after:)或者index(before)引用后一个或者前一个索引
w[w.characters.index(after: w.startIndex)]
w[w.characters.index(before: w.endIndex)]
// 用字符串的字符数组的index(_:0ffsetBy:)方法向前进位
w[w.characters.index(w.startIndex, offsetBy: 3)]
// 字符串characters属性的indices属性便是索引的区间
for b in w.characters.indices{
print(w[b] )
}
// 修改字符串-插入和删除
var a1 = "小波说雨燕"
// 插入一个字符
a1.insert("!", at: a1.endIndex)
// 插入一个字符串
let b1 = "3天学会Swift"
// a1.insert(contentsOf: b1.characters, at: a1.endIndex)
a1.insert(contentsOf: b1.characters, at: a1.characters.index(before: a1.endIndex))
print(a1)
//删除一个指定索引的字符,用removeAtIndex方法
//删除最后一位
a1.remove(at: a1.characters.index(before: a1.endIndex))
print(a1)
//删除一个范围的子串,用removeSubrange
//删除之前添加的字符
let startIndex = a1.characters.index(a1.endIndex, offsetBy: -(b1.characters.count))
let range = startIndex..<a1.endIndex
a1.removeSubrange(range)
a1
// 比较字符串
/*
Swift 提供了3中方法比较文本值:字符串和字符相等性,前缀相等,后缀相等
*/
let x1 = "\u{1112}\u{1161}\u{11ab}"
let y1 = "\u{d55c}"
x1 == y1
/*
//: - 但不同语义的Unicode字符是不相等的. 比如英语的A和俄文的A虽然相似,但语义不同,不能视为相等. 中文的"对"和日文的"対"虽然语义相同,字型明显不同.
*/
// 前缀和后缀相等:用于检查一个字符串是否具有特定前缀和后缀 hasPrefix hasSuffix
let a2 = "小波说雨燕 之 Swift 3!"
let b2 = "小波说雨燕 之 IOS9闪电开发"
let c2 = "小波说雨燕"
let d2 = "!"
a2.hasPrefix(c2)
b2.hasPrefix(c2)
a2.hasSuffix(d2)
b2.hasSuffix(d2)