自从苹果2014年发布Swift,到现在已经两年多了,而Swift也来到了3.1版本。最近利用工作之余,把官方的Swift编程指南看了一遍。现在整理一下笔记,回顾一下以前的知识,有需要的同学可以去看Swift官方文档。
一、字符串
注意:使用let声明一个不可变的字符串,用var声明一个可变的字符串。
1、初始化一个空字符串(这两个字符串都是空的,并且是相等的)
var emptyString = ""// 空字符串字面值
var someString = String() // 使用默认构造函数
2、使用字符串字面值来初始化一个常量或者变量:(自动推到,不用定义类型)
let someString = "这是一个字符串"
3、懒加载一个字符串
privatelazyvar titleArray : [String] = ["1", "2", "3", "4", "5"]
4、字符串判空
(1)
var anotherEmptyString = String()
if anotherEmptyString.characters.count==0 {
print("字符串为空")
}
(2)
if anotherEmptyString.isEmpty {
print("字符串为空")
}
5、字符串拼接
(1)字符串插入值(常用的拼接方式) \() (常用)
//字符串插值可以把常量、变量、字面值和其他表达式混合在一起,拼接成一个新的字符串。
//用 \() 来包裹字符串拼接,相当于OC的 stringWithFormat
let multiplier = 3
let message = "\(multiplier)乘以2.5等于\(Double(multiplier) * 2.5)"
// message is "3乘以2.5等于7.5"
(2)使用加号运算符(+)来拼接两个字符串:(常用)
let string1 = "hello"
let string2 = "there"
var welcome = string1 + string2
// welcome 等于 "hello there"
(3)字符串的格式化比如时间:03:04
let min = 3
let second = 4
let time = String(format: "%02d:%02d", arguments: [min, second])
print(time)
(3)字符串拼接字符串
var constatString = "字符串前半部分"
constatString +="和字符串后半部分"
// constatString 现在是 "字符串前半部分和字符串后半部分"
(4)使用加法赋值运算符来拼接一个已经存在字符串:
var instruction = "look over"
instruction +="there"
// instruction 等于 "look over there"
(5)使用String类型的append()方法来拼接:
let exclamationMark: Character = "!"
welcome.append(exclamationMark)
// welcome 等于 "hello there!"
// 注意:不能添加一个String或者Character到一个已经存在的Character变量,因为Character类型的值只能包含一个字符。
(6)、字符串字面值可以包含以下字符:
转义字符:\0(空字符)、\`(反斜杠)、\t(水平制表符)、\n(换行)、\r(回车)、\"(双引号)、\'`(单引号)
6、插入和移除 (Inserting and Removing)
//在特定的位置插入一个字符,使用insert(_:at:);在特定的位置插入另外一个字符串内容,使用insert(contentsOf:at:):
var welcome = "hello"
welcome.insert("!", at: welcome.endIndex)
// welcome 现在是 hello!
welcome.insert(contentsOf: " there".characters, at: welcome.index(before: welcome.endIndex))
// welcome 现在是 hello there!
//在特定的位置删除一个字符,使用remove(at:),删除一个范围内的字符串,使用removeSubrange(_:):
welcome.remove(at: welcome.index(before:welcome.endIndex))
// welcome 现在是 hello there
let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex
welcome.removeSubrange(range)
// welcome 现在是 hello
//注意:我们可以在遵循了RangeReplaceableCollection协议的任何类型中使用insert(_:at:)、insert(contentsOf:at:)、remove(at:)和removeSubrange(_:)方法,包括:String、Array、Dictionary、Set。
7、字符串的截取
// Swift中提供了特殊的截取方式
// 该方式非常麻烦
// Index创建较为麻烦
// 简单的方式是将String转成NSString来使用
// 在标识符后加:as NSString即可
let myStr = "www.520it.com"
var subStr = (myStr asNSString).substring(from: 4)
subStr = (myStr asNSString).substring(to: 3)
subStr = (myStr asNSString).substring(with: NSRange(location: 4, length: 5))
print(subStr)
8、字符串的比较 (Comparing Strings)
注意:Swift提供了三种方式来进行文本比较:1)字符串和字符相等;2)前缀相等;3)后缀相等。
(1)使用等于==和不等于!=进行比较:
let quotation = "We're a lot alike, you and I."
let sameQuotation = "We're a lot alike, you and I."
if quotation == sameQuotation {
print("这个字符串是相等的")
}
(2)前缀和后缀相等 (Prefix and Suffix Equality)
使用hasPrefix(_:)和hasSuffix(_:)来判断一个字符串是否有特定的前缀或者后缀。
if sameQuotation.hasPrefix("We") {
print("字符串前缀包含we")
}
9、字符串的遍历
var appenString = String()
for character in"我是一个字符串的遍历".characters {
appenString.append(character)
print("遍历出来的字符:\(character)")
}
print("拼接后的字符串:\(appenString)")
10、字符串的长度
let title : String = "获取字符串长度"
let count = title.characters.count//获取String字符串的长度
print(count)
11、字符串一些属性
// 替换
print("空格替换成-:", s.replacingOccurrences(of: " ", with: "-"))
// 去首尾空格
print("去掉空格:", s.trimmingCharacters(in: .whitespaces))
// 分割
print("分割:", s.components(separatedBy: "/"))
更多精彩内容,请关注爱恨的潮汐微信公众号(微信ID:xueyuanxunmeng)
营运人员:爱恨的潮汐(2017.4.14)