字串型別就是一串字元的組合,其在開發時可以應用的範圍很多,產品的名稱,歌詞等都需要透過字串來處理。
var str = "Hello, World"
這是簡單的字串的宣告,直接利用型別推斷來進行宣告。
字串需要跨越多行的,那就使用多行字符串,由一對三个雙引號包著的。
var quote = """
《IMPORTANT UPDATE》
Gen 2: ESNX, will be delayed until 2022 Q4.
In ESNX, holders can freely choose the components and assemble them. Then, our self-developed system will instantly assemble the 3D model in real time through the on-chain data. Finally, holders will obtain the ESNX robots.
"""
print(quote)
var str2 = ""
這樣可以宣告一個空字串
但是要注意,在開發時空字串與nil是不同的兩個概念,如果一個Optional可選類型沒有賦值,則為nil,如果有賦值的話,則為空字串,不是nil,在開發時這裡需多留意。
透過構造方式來進行str的變數構造。
str = String()
// 構造空字串
str = String("Hello, World")
// 透過字串構造Hello, World
str = String(123)
// 透過整數構造123
str = String(31.3)
// 透過浮點數構造31.3
str = String(false)
// 透過Bool值構造false
str = String(describing: (1,1,0,true))
// 透過元組構造
str = String(describing: [1,2,3])
// 透過列表構造
Swift的String類型提供的方式很多,也可以將其他類型透過構造方法值轉為字串。
var stt = ""
stt = String(describing: Int.self)
// 透過類型構造字串"Int"
print(stt)
// 印出 Int
加 + 符號,拼接新的字串
var c1 = "Apple"
var c2 = "Store"
var c3 = c1 + " " + c2
print(c3)
// 印出 Apple Store
中間拼接了一個空格
var d1 = "Apple \(123)"
print(d1)
// 印出 Apple 123
var d2 = "Store \(stt)"
print(d2)
// 印出 Store Int
var d3 = "Apple \(1 + 3)"
print(d3)
// 印出 Apple 4
字元用來表示單個字元,如數字,英文,符號等,都可以使用字元來進行表示,也可以透過遍歷將字串中的字元分解出來。
Swift使用Character來描述字元類型。
var e: Character = "a"
// 宣告字元
var e2: [Character] = ["H","I"]
// 透過字元陣列來構造字串 HI
var e3 = String(e2)
var e4 = Character("a")
// 透過構造方法宣告字元變數
let name = "NTUE"
for in 遍歷,可以將字串中的字元拆解出來
for character in name {
print(character)
}
// 依次印出 N T U E
String類型中封裝了許多屬性和方法。
var obj1 = ""
if obj1.isEmpty {
print("Empty")
}
印出Empty
if obj1.count == 0 {
print("Empty")
}
印出Empty
var com1 = "30a"
var com2 = "30b"
比較兩個字串是否相等,只有兩個字串中的所有位置的字元都相等時,才是相等的字串。
if com1 == com2 {
print("Equal")
}
在比較兩個字串的大小時,會一個一個的對每個字元進行比較,直到遇到不相等的字元為止。
if com1 < com2 {
print("small")
}
// 印出Small
開發者可以透過下標的方式來訪問字串中的每個字元,獲取字串起始下標與結束下標。
var str = "Hello World"
起始下標
var startIndex = str.startIndex
print(startIndex)
// 印出Index(_rawBits: 1)
結束下標
var endIndex = str.endIndex
print(endIndex)
// 印出Index(_rawBits: 720897)
startIndex與endIndex這兩個變數所獲取到的值為Index類型,不是Int類型,不能直接進行加減運算,而是需要使用下標移動的方法操作。
下標移動
var char = str[str.index(after: startIndex)]
print(char)
// 印出 e
var char2 = str[str.index(before: endIndex)]
print(char2)
// 印出 d
index(after:)方法用來得到當前下標的後一位下標,index(before:)方法用來得到當前下標的前一位下標。
下標範圍
var subString = str[startIndex...str.index(startIndex, offsetBy: 4)]
print(subString)
// 印出 Hello
var subString2 = str[str.index(endIndex, offsetBy: -5)..<endIndex]
print(subString2)
//印出 World
加上一個字元
str.append(Character("!"))
print(str)
//印出 Hello World!
str.append("Hello World")
print(str)
// 印出Hello World!Hello World
指定位置插入
str.insert("!", at: str.index(str.startIndex, offsetBy: 12))
print(str)
// 印出 Hello World!!Hello World
指定位置替換
str.replaceSubrange(str.startIndex...str.index(str.startIndex, offsetBy: 4), with: "Hi")
print(str)
// 印出 Hi World!!Hello World
指定位置刪除
str.remove(at: str.index(before: str.endIndex))
print(str)
// 印出 Hi World!!Hello Worl
刪除指定範圍
str.removeSubrange(str.startIndex...str.index(str.startIndex,offsetBy: 2))
print(str)
// 印出 World!!Hello Worl
刪除所有字元,此時str = “”str.removeAll()
下面的兩個方法可以完成大小寫的轉換
var string2 = "My name is andy"
string2 = string2.uppercased()
print(string2)
// 印出 MY NAME IS ANDY
string2 = string2.lowercased()
print(string2)
// 印出 my name is andy
下面的兩個方法可以檢查字串中的前綴與後綴。
string2.hasPrefix("My")
string2.hasSuffix("andy")
接下來,是陣列的介紹