1.字面量 方式
let str = "string"
2.初始化 空字符串
let str2 : String = ""
let str3 : String = String()
3.是否为空
print(str.isEmpty)
4.字符串的可变性
let str4 = "xxx" // 不可变
var str5 = "oo" //可变
5.字符串的拼接
方式一:
str += "abc"
方式二:
var str6 = "aa"
var str7 = "bb"
var str8 = str6 + str7
//******new*******
//拼接 使用 \()
func demo4() -> Void {
let name = "老王"
let age = 18
//1.不同的类型 拼接
let str = "\(name)\(age)"
//2.注意-可选项-的拼接,要使用 ?? 双问号
let title:String? = "boss"
let str1 = "\(name)\(age)\(title ?? "")"
//3.其他类型
let point = CGPoint(x: 10, y: 22);
let str2 = "\(name)\(point)"//代替oc中的NSStringFromCGPoint(poinit)
print(str)
print(str1)
print(str2)
4.重点:格式化
let dateStr1 = String.init(format: "%02d:%02d:%02d", h,m,s)
}
6.字符串插入值
var str9 = "xxxx\(str)oooo"
7.字符串的遍历
for i in str.characters{
print( i )
}
8.字符的数量
//1.返回指定编码的字节
//utf8编码,每个汉字占3个字节
let str1 = "hello world你好";
print(str1.lengthOfBytes(using: .utf8));
//2.字符的个数(推荐)
print(str1.characters.count)
//3.使用NSString中转("值 as 类型"类型转换)
let ocStr = str1 as NSString;
print(ocStr.length)
9.字符串的索引
//第一个索引
print(str.startIndex) //0
//第二个索引
print(str.startIndex.successor()) // 1
//最后一个索引
print(str.endIndex) //6,多一个,因为把最后默认的换行也算上了
//倒数第二个索引
print(str.endIndex.predecessor()) //5
//获取任意一个索引
print(str.startIndex.advanceBy(3))
print(str.startIndex.advanceBy(-4)) //负数,从后往前数
//通过索引,获取字符
print(str[str.startIndex]) // 第一个字符
10.indices的使用(indices将字符的所有下标获取到)
for i in str.characters.indices{
print( i )
print(str[i])
}
11.在指定索引处,插入字符
str.insert("k" , atIndex: str.startIndex)
12.删除
//单个字符的删除
str.removeAtIndex(str.srtartIndex)
//删除一段范围
let range = str.endIndex.advanceBy(-3)...<str.endIndex
str.remvoeRange(range)
13.字符串比较
let s1 = "asdf"
let s2 = "asdf"
//比较字符串是否相等
if s1 == s2{
print("相等")
}
14. 是否包含前缀 后缀
print(str.hasPrefix("st"))
print(str.hasSuffix("ing"))
//new 取子串
//子串
func demo6(){
//建议:一般使用NSString做中转,因为swift取子串的方法一直在优化
//1.NSString
let str = "我们一起去fly"
let ocStr = str as NSString;
let s1 = ocStr.substring(with: NSMakeRange(2, 3));
print(s1);
//2.swift3.0 的方法
// let r = 0..<5;
// str.substring(with: <#T##Range<String.Index>#>)
//特点:Index
//startIndex 的position == 0
print(str.startIndex)
//endIndex 的position == str.length
print(str.endIndex)
//取子串的范围
guard let range = str.range(of: "一起") else{
print("no string")
return;
}
//一定找到的范围
print(range)
print(str.substring(with: range))
}