课程来源于:Swift编程基础
文章目录
1. 数据类型, 变量常量, 类型判断, 拼接字符串
1.1 查看Swift的版本
终端输入xcrun swift -version
1.2 let来定义常量
1.3 拼接字符串
"\()"
括号中填入变量名
print(str + "\(int)")
2 类型别名, 类型转换
2.1 类型别名
typealias Dog = Int
var a:Int = 11
var b:Dog = 22
b = a
print(b)
typealias S = String
var c:String = "ccc"
var d:S = "ddd"
d = c
print(d)
2.2 类型转换
var e = 10
print("值等于 = " + String(e))
print("值等于 = " + String(1.5))
print("值等于 = " + String(true))
let f = false
print("值等于 = " + String(f))
nil
等于null
var g = "1aaa"
var h = "10"
var i = Double(g) ?? 0//可转就是该值不可转就是??后的值
var j = Double(h) ?? 0
//print(Int(g)) 不可以转
print(Int(h))
print(i)
print(j)
3. 可选类型和解析值
var a:String? = "Hello, playground"
print(a)
print(a!) //确定该变量的值存在就需要加!(解析值)
var c:Int? = 10
if(c == nil){
print("没有")
}else{
print("值为 = " + "\(c!)")
print("值为 = " + String(c!))
}
4. 元组类型
var a = (1, "a", true, 1.5)
var b:(Int, String) = (11, "bbb")
var c = (name1:1, name2:2)
var d:(name1:Int, name2:String) = (11, "ddd")
print(a)
print(b)
print(c)
c.name1 = 22
print(c.name1)
print(d)
元组是值传递.
let (name1, name2) = ("swift", 1.5)
print(name1)
print(name2)
var (name3, _, name4) = (100, true, false)// _表示省略该元值
print(name3)
print(name4)
5. 基础运算符
没有i++
和i--
6. if语句, 可选类型绑定, 隐式展开
6.1 可选类型绑定
var a:Int? = nil
if let value = a//可选类型绑定
{
print("值为: \(value)")
}
else
{
print("没有值")
}
6.2 隐式展开
var b:Int! = 100 //当可选项类型确定时,用隐式展开
var c:Int = b
print(c)
7. switch case, fallthrough穿透效果
7.1 fallthrough
var a = 10
switch a {
case 5:
print("情况0")
case 10:
print("情况1")
fallthrough //继续执行下面代码
case 20:
print("情况2")
default:
print("没有匹配")
}
情况1
情况2
8. 区间运算符, for in 循环, continue和break
8.1 区间运算符
var a = 1...4
print("范围 = \(a)")
var b = 1..<4
print("范围 = \(b)")
var c = -3...4
print("范围 = \(c)")
var d = (2.5) ... 4
print("范围 = \(d)")
var e = 1...
print("范围 = \(e)")
8.2 for in
print("reversed")
for index in (1...5).reversed() {
print(index)
}
print("stride on")
//stride to不包含结尾
for index in stride(from: 0, to: 10, by: 2) {
print(index)
}
print("stride through")
//stride through包含结尾
for index in stride(from: 0, through: 10, by: 2) {
print(index)
}
9.while和repeat while
repeat while
就相当于是do while
10. String基本操作
10的中操作所使用的字符串都是var str = "ABCDEF"
10.1 截取字符串
var str = "ABCDEF"
print("字符串长度为: " + "\(str.count)")
str.startIndex
str.endIndex
print("字符串第一个字符: " + String(str[str.startIndex]))
print("字符串最后一个字符: " + String(str[str.index(before: str.endIndex)]))
print("从开始的位置算,3位置的字符: " + String(str[str.index(str.startIndex, offsetBy: 3)]))
var a = str.index(str.startIndex, offsetBy: 2)
var b = str.index(str.startIndex, offsetBy: 4)
print("字符串第2-4位字符: " + String(str[a...b]))
var e = str.firstIndex(of: "E") ?? str.endIndex
print("字符串第0到E之间的字符: " + String(str[str.startIndex...e]))
print("字符串索引前4的字符:" + String(str.prefix(4)))
let f = str.index(str.endIndex, offsetBy: -2)
print("字符串最后两位字符: " + String(str[f..<str.endIndex]))
字符串长度为: 6
字符串第一个字符: A
字符串最后一个字符: F
从开始的位置算,3位置的字符: D
字符串第2-4位字符: CDE
字符串第0到E之间的字符: ABCDE
字符串索引前4的字符:ABCD
字符串最后两位字符: EF
10.2 包含其中
print("包含是否含有该完整的字符串: " + String(str.contains("BC")))
print("包含是否含有该完整的字符串2: " + String(str.contains("Bc")))
print("包含是否含有该字符串: " + String(str.contains(where: String.contains("Bc"))))
print("包含是否含有该字符串2: " + String(str.contains(where: String.contains("bc"))))
包含是否含有该完整的字符串: true
包含是否含有该完整的字符串2: false
包含是否含有该字符串: true
包含是否含有该字符串2: false
10.3 判断前后缀
print("判断字符串是否包含某字符串前缀: " + String(str.hasPrefix("AB")))
print("判断字符串是否包含某字符串前缀2: " + String(str.hasPrefix("Ab")))
print("判断字符串是否包含某字符串前缀: " + String(str.hasSuffix("EF")))
print("判断字符串是否包含某字符串前缀2: " + String(str.hasSuffix("Ef")))
判断字符串是否包含某字符串前缀: true
判断字符串是否包含某字符串前缀2: false
判断字符串是否包含某字符串前缀: true
判断字符串是否包含某字符串前缀2: false
10.4 追加
str.append("aaaaaa")
print("字符串追加: " + String(str))
字符串追加: ABCDEFaaaaaa
10.5 插入
str.insert(contentsOf: "hello", at: str.index(str.startIndex, offsetBy: 3))
print("在3位置插入hello字符串: " + String(str))
在3位置插入hello字符串: ABChelloDEF
10.6 替换
let index1 = str.index(str.startIndex, offsetBy: 1)
let index2 = str.index(str.startIndex, offsetBy: 3)
let range = index1...index2
str.replaceSubrange(range, with: "123123")
print("替换1到3位置的字符串: " + String(str))
替换1到3位置的字符串: A123123EF
var new_value = str.replacingOccurrences(of: "BC", with: "888") //返回一个新的值
print("替换BC位置的字符串: " + String(new_value))
替换BC位置的字符串: A888DEF
10.7 删除
var a = str.index(str.startIndex, offsetBy: 1)
var b = str.index(str.startIndex, offsetBy: 3)
var range = a...b
str.removeSubrange(range)
print("删除1到3位置的字符串: " + String(str))
删除1到3位置的字符串: AEF
10.8 遍历字符串
- 直接遍历
for item in str {
print(item)
}
- 索引遍历
for index in 0..<str.count {
print(str[str.index(str.startIndex, offsetBy: index)])
}
for index in (0..<str.count).reversed() {
print(str[str.index(str.startIndex, offsetBy: index)])
}
10.9 多行文本
var value = """
hello
world
"""
print(value)
hello
world
10.10 转义
var value = #""Hello #@$#%&^&*()(&&^world""#
print(value)
"Hello #@$#%&^&*()(&&^world"