swift的字符串是值类型
String与Character
Characte值必须仅包含单个字符。
var str = "hello"
//字符串遍历
for character in str {
print(character)
}
//h
//e
//l
//l
//o
可以将Character类型的值通过stringappend()方法插入到str中
let char:Character = "!"
str.append(char)
print(str) // hello!
特殊字符
\n 换行
初始化空字符串
let str1 = ""
let str2 = String()
通过其布尔属性isEmpty判断是否为空
if str.isEmpty { print("Nothing") }
字符串的拼接
//1
var str = "Hello"
str += " World"
print("str") //"Hello World"
//2
let str3 = str + str2
print("str3") //"HelloWorld"
字符串的插值
let str1 = "World"
let str2 = "Hello \(str1)"
print("str2") //"Hello World"
计算字符
let str = "count"
print(str.count) // 5
注意:Swift将扩展字形集合用于Character
值意味着字符串连接和修改可能并不总是会影响字符串的字符数。
例如:
str += "\u{301}"
print(str.count) // 5
count属性返回的字符数量并不总是等于NSString的lenght,两者采用的编码方式不同,String采用Unicode标准,NSString采用UTF-16
字符串的索引
let greeting = "Guten Tag!"
//在首字母之后
greeting[greeting.index(after: greeting.startIndex)]
//在最后一个字母之前
greeting[greeting.index(before: greeting.endIndex)]
//根据下标输出
let index = greeting.index(greeting.startIndex, offsetBy: 0)
greeting[index]
//使用该indices属性可以访问字符串中单个字符的所有索引。
for index in greeting.indices {
print("\(greeting[index]) ", terminator: "")
}
插入与删除
var welcome = "hello"
let index2 = welcome.index(welcome.startIndex,offsetBy:0)
//插入字符
//要将单个字符插入到指定索引处的字符串中,请使用该insert(_:at:)
方法,并在指定索引处插入另一个字符串的内容,请使用该insert(contentsOf:at:)
方法。
welcome.insert("w", at: index2)
//插入字符串
welcome.insert(contentsOf: "www", at: index2)
//删除字符
//要从指定索引处的字符串中删除单个字符,请使用该remove(at:)
方法,并删除指定范围内的子字符串,请使用以下removeSubrange(_:)
方法:
welcome.remove(at: index2)
print(welcome)
//删除字符串
let range = welcome.startIndex ..< welcome.index(welcome.startIndex, offsetBy: 3)
welcome.removeSubrange(range)
print(welcome)
截取子字符串
var welcome = "hello,world"
let index = welcome.firstIndex(of: ",") ?? welcome.endIndex
//子串不适合长期存储,因为它们重用原始字符串的存储
let beginning = welcome[..<index]
//保存为一个新字符串做持久存储
let newStr = beginning