PART_A 运算符
赋值运算符:
=
普通赋值
var num num = 5
元组赋值
let (x,y) = (0,0)
=
操作不返回任何值
算数、组合赋值、自增自减、、负号、字符串拼接
求余时符号只看左边,可对浮点数求余
let a = 3,b = 4 // 算数运算 var c = 0 c = a + b c = a - b c = a * b c = a / b c = a % b // 组合赋值运算 c += a c -= a c *= a c /= a c %= a // 自增自减运算 c++ // 先自增,再返回值 c-- ++c // 先返回值,再自增 --c // 负号 -c // 字符串拼接 String str = "hello " + "world"
比较运算符
let a = 3,b = 4 a == b a != b a > b a >= b a < b a <= b
? :
三目运算符let num = 3 num == 5 ? "yes" : "no"
??
空合运算符判断a,若为空则返回b值,若不为空解封并返回a值
a必须是Optional类型
b的存储值类型必须和a一致
var a:Int?,b = 5 a ?? b a != nil ? a! : b
区间运算符
a ... b
闭区间b必须大于a
半开区间:
a ..< b
或者a >.. b
数组遍历时:
0 ..< strArr.count
for x in 1 ... 9 { for var y = 1; y <= x; y++ { print("\(y) * \(x) = \(x * y)",terminator:"\t") // 字符串插值:通过\()来插入实际值 // \()中不能包含非转义\、回车、换行符 } print() }
逻辑运算
非:
!a
与(短路):
a && b
或(短路):
a || b
推荐使用
()
来明确优先级
PART_B 字符串
字符串是值类型
初始化空字符串(两种方式等价)
var str = ""
var str = String()
判空
str.isEmpty
拼接
var str = "hi " + "catface"
var str = "hello" let c : Character = "!" str.append(c) // str = "hello!"
字符
Character
初始化:
let c : Character = "!"
字符数组构造字符串
let characters : [Character] = ["c","a","t","��"] let str = String(characters) print(str)
遍历
for c in "hello ~~ ☆".characters { print(c) } // h // e // ...
Unicode(国际标准,用于文本的编码和表示)
访问和修改字符串
索引
let str = "hello world" print(str[str.startIndex]) print(str[str.startIndex.successor()]) print(str[str.endIndex.predecessor()]) print(str[str.startIndex.advancedBy(3)]) for index in str.characters.indices { print(str[index],terminator : " ") } // h,e,d,l // h e l l o w o r l d
starIndex
:String的第一个Charater的索引endIndex
:String的最后一个Charater的索引,不是有效的字符串下标successor()
:后一个索引predecessor()
:前一个索引advancedBy(index)
:指定位置的索引indices
:创建一个包含全部索引的范围(Range)
插入和删除
insert(_:atIndex:)
:指定索引插入字符insertContentsOf(_:at)
:指定索引插入字符串removeAtIndex(index)
:删除指定索引的值removeRange(range)
:删除指定索引的子字符串var str = "hello world" str.insert("-",atIndex:str.startIndex) // str = "-hello world" str.insertContentsOf("===".characters,at: str.endIndex) // str = "-hello world===" str.removeAtIndex(str.startIndex) // str = "hello world===" str.removeRange(str.endIndex.advancedBy(-3) ..< str.endIndex) // str = "hello world"
比较字符串
字符串/字符相等:
==
、!=
前缀/后缀相等:
hasPrefix(str)
、hasSuffix(str)
if str.hasPrefix("hello") { if str.hasSuffix("world") { print("yes") } }
以上。如有错误和疑问,欢迎指正提出。 catface.wyh@gmail.com