一、字符串(String):
swift中的String时结构体,OC中的NSString时类。
// 一个字符一个字符的取出来
let str:String = "我要去飞了"
// NSString 不支持下面的遍历。
for c in str.characters
{
print(c)
}
打印
我
要
去
飞
了
/// 字符串的长度
func demo1()
{
let str = "hello world你好"
// 1> 返回指定编码的字节数量
print("bytes=\(str.lengthOfBytes(using: .utf8))")
// 2> 获取字符串长度(字符的个数)
print("len=\(str.characters.count)")
// 3> 使用NSString中专, as也是一种类型转换
let ocStr = "hellow" as NSString
print("len=\(ocStr.length)")
}
打印:
bytes=17
len=13
len=6
/// 字符串拼接
// NSString 拼接采用stringWithFormat:**
func demo2()
{
let name = "唐斌"
let age = 40
let title: String? = "BOSS"
let point = CGPoint(x:100, y:200)
// 拼接字符串需要注意,可选项Optional,可以使用“??”,title??"" 表示title为nil的话,就使用“”
let str = "\(name) \(age) \(title ?? "") \(point))"
print("str=\(str)")
}
打印:
str=唐斌 40 BOSS (100.0, 200.0))
/// 格式化
func demo3()
{
let h = 8
let m = 9
let s = 6
let dateStr = "\(h):\(m):\(s)"
print("dateStr=\(dateStr)")
// 格式字符串格式化
let dateStr1 = String(format: "%02d:%02d:%02d", h, m, s)
print("dateStr1=\(dateStr1)")
}
打印:
dateStr=8:9:6
dateStr1=08:09:06
/// 取字符串
func demo()
{
// 建议:一般使用NSString作为中转,因为Swift取子串的方法一直在优化。
let str = "我们一起去飞"
// 1. NSString
let ocStr = str as NSString
let s1 = ocStr.substring(with: NSMakeRange(2, 3))
print("s1=\(s1)")
// 2. String的3.0方法
// str.substring(with: <#T##Range<String.Index>#>)
// Index
// 得到 “一起去飞”
let s2 = str.substring(from: "我们".endIndex); // "我们"跟上面没有关系,只是用来计算长度
print("s2=\(s2)")
// 取子字符串的范围
guard let range = str.range(of: "一起") else {
print("没有找到字符串")
return
}
// “一定”找到的范围
print("range=\(range)")
print("strrange=\(str.substring(with: range))")
}
打印:
s1=一起去
s2=一起去飞
range=Index(_base: Swift.String.UnicodeScalarView.Index(_position: 2), _countUTF16: 1)..<Index(_base: Swift.String.UnicodeScalarView.Index(_position: 4), _countUTF16: 1)
strrange=一起
二、数组(Array):
//MARK: - 数组的定义
func demo()
{
// OC使用[]定义数组,Swift一样,但是没有‘@'
// 自动推到的结果 [String] -> 标识数组中存放的时String
// 跟 OC 中的数组指定的泛型类似
let array = ["消防", "唐斌"]
print("array=\(array)")
// [Int] -> 标识存放的时Int
// Swift 中基本数据类型不需要包装
let array2 = [1, 2, 3, 4, 5]
print("array2=\(array2)")
// CG结构体
let p = CGPoint(x: 10, y: 300)
let array3 = [p]
print("array3=\(array3)")
// 混合数组
// OC如果数组中的类型不一致,自动推到的结果[NSObject]
// 在Swift中还有一种类型 [Any] -> 任意对象
// 在Swift中一个类可以没有任何‘父类’
// 在混合的数组中,CG结构体需要包装,调试结果包装部包装都是可以的
// NSValue(cgPoint: p)
//
let array4 = ["张三", 3, p] as [Any]
print("array4=\(array4)")
}
打印:
array=["消防", "唐斌"]
array2=[1, 2, 3, 4, 5]
array3=[(10.0, 300.0)]
array4=["张三", 3, (10.0, 300.0)]
三、字典(Dictionary):