字符串常见操作
1.字符串是值类型
1.String值在传递给方法或者函数的时候会被复制过去;
2.赋值给常量或者变量的时候也是一样的;
3.Swift编译器优化了字符串使用的资源,实际上拷贝只会在确实需要的时候才进行
var str: String = "abc"
var str1 = str
print(str==str1) //true
str += "def"
print(str) //abcdef
print(str1) //abc
print(str=str1) //false
2. 操作字符串
1.for -in 循环遍历String中的每一个独立的Character
2.Character类型
3.String值可以通过传入Character数组来构造
for character in "Dong!小狗" {
print(character)
/**
D
o
n
g
!
小
狗
*/
}
let carCharacters: [Character] = ["C","a","t","!"]
let catString = String(carCharacters)
print(catString)//Cat!
3.字符串拼接
1.使用加运算符(+)创建新字符串; 2.使用加赋值符号(+=)在已经存在的String值末尾追加一个String值 3.使用String类型的append()方法来可以给一个String变量的末尾追加Character值
4.字符串插值
1.字符串插值是一种从混合常量,变量,字面量和表达式的字符串字面量构造新String值得方法;
2.每一个你插入到字符串字面量的元素都要被一对圆括号包裹,然后使用反斜杠前缀
3.类似于NSString的stringWithFormat方法,但是更加简单,更强大
let multiplier = 3
let meassage = "\(multiplier) times 2.5 is \(Double(multiplier)*2.5)"
print(meassage)//3 times 2.5 is 7.5
5.字符串索引
1.每一个String值都有相关的索引类型,String.index ,它相当于每个Character在字符串中的位置;
2.startIndex属性来访问String中第一个Character的位置.endIndex属性就是String中最后一个字符后的位置;
3.endIndex属性并不是字符串下标脚本的合法实际参数;
4.如果String为空,则startIndex和endIndex相等;
5.使用greeting.index(before: )和index(after: )方法来访问给定索引的前后
6.要访问给定索引更远的索引,你可以使用index(_, offsetBy: );
7.使用indeices属性来访问字符串中每个字符串的索引;
注意事项:String不能使用下标的方法取值.
var greeting = "Gunten Tag!"
print([greeting.startIndex])
print([greeting.endIndex])
1.插入字符,使用insert(_, at: )方法;
2.插入另外一个字符串的内容到特定的索引,使用insert(contentsOf: , at: )方法
greeting.insert(contentsOf:"god" , at:greeting.endIndex )
1.移除字符串,使用过remove(at: )方法
2.移除一小段特定范围的字符串,使用removeSubrange(Range<String.Index>)方法
6.字符串比较
1.字符串和字符串相等性(==和!=)
2.前缀相等性hasPrefix
3.后缀相等性hasSuffix
print(welcome==welcome1)
print(welcome.hasPrefix("hello"))
print(welcome.hasSuffix("world"))