天天看點

swift 4. 字元串swift 4. 字元串

swift 4. 字元串

标簽:swift

2. 用字首或字尾法比較字元串

hasPrefix

hasSuffix

這2個字元串的對象方法,來判斷和比較,他們傳回boolean值的true或falsely

看個例子:

//申明一個字元數組,後面會講到
var string1 = [
    "Act1:1:Dojo",
    "Act1:2:Do",
    "Act1:3:Dojo",
    "Act1:4:Dojo"
]
//申明2個整型變量,記住中間要用逗号啊。
var j = ,k = ,d = 

for i in string1 {
    if i.hasPrefix("Act1") {
        j++
    }
    if i.hasSuffix("Do"){
        k++
    }

    if i.containsString("Do") {
        d++
    }
}

print("有Act字首的數有\(j)個") //輸出4
print("有Do字尾的數有\(k)個") //輸出1
print("包含Do的數有\(d)個") //輸出4
           

3. 大小寫轉換

大小寫轉換是一般的語言中都會有的函數方法,swift中用字元串對象的屬性

uppercaseString

lowercaseString

capitalizedString

來轉換,記住是屬性。不是函數,也不是方法:

//大小寫轉換

var string2 = "hi,my name is yangyi ,what`s your name?"

var string3 = "hi,My Name IS Yangyi ,what`s your name?"

var string4 = "hi,my name is yangyi ,what`s your name?"

var string_upp = string2.uppercaseString

var string_lower = string3.lowercaseString

var first_upp = string4.capitalizedString

print("全部大寫\(string_upp)") 
//全部大寫HI,MY NAME IS YANGYI ,WHAT`S YOUR NAME?

print("全部小寫\(string_lower)") 
//全部小寫hi,my name is yangyi ,what`s your name?

print("首字母大寫\(first_upp)") 
//首字母大寫Hi,My Name Is Yangyi ,What`s Your Name?
           

我順便來複習下其他語言中是如何大小寫轉換的:

//javascript
var a = "hello";
var b = "HellO";
var a_upper = a.toUpperCase();  //大寫
var a_lower = a.toLowerCase();  //小寫
           
//php
$a = "hello, word!";
$a_upper = strtoupper($a); //轉換成大寫
$b_lower = strtolower($b); //轉換成小寫
$first_upper = ucfirst($b); //首字母大寫
           

4. 周遊一個字元串

在swift2中周遊字元串得用字元串的一個

characters

屬性:

var str = "Hello, Swift~"
for c in str.characters {
    print(c, terminator: " ")
}
           

輸出:

H e l l o ,   S w i f t ~ 
           

5. 擷取字元串中的某個字元

swift2中不能用

str[0], str[1]

等方式,得用

index

索引的方式,定位到位置:

startIndex 标示字元串的0開始的一個索引

var str = "Hello, Swift"
let startIndex = str.startIndex  //0
startIndex  //0
str[startIndex] //H
           

advancedBy 從索引位置開始取第幾個值

var str = "Hello, Swift"
let startIndex = str.startIndex  //0
startIndex  //0
str[startIndex.advancedBy()] //e
str[startIndex.advancedBy()] //S
           

predecessor 取前一個 succesor 取後一個

var str = "Hello, Swift"
let startIndex = str.startIndex  //0
let spaceIndex = startIndex.advancedBy() // " "定位到空格
str[spaceIndex.predecessor()] // 空格前是","
str[spaceIndex.successor()] // 空格後是"S"
           

endIndex 最後一個字元索引。

var str = "Hello, Swift"
let endIndex = str.endIndex // 13 最後一位是13。
str[endIndex.predecessor()] //但是13沒有,隻有12.是以得取前一個。
           

是以,startIndex 和 endIndex是一個前閉後開

0..<13

這樣的結構。

Range 去一個區間的字元

其它的一些字元串的函數用法:

let range = startIndex..<spaceIndex.predecessor() // 生成一個range 0..<5
str.replaceRange(range, with: "Hi") // 替換一個區間 Hi, Swift
str.appendContentsOf("!!!") // 在尾部追加 "Hi, Swift!!!"
str.insert("?", atIndex: str.endIndex) //在一個索引出,插入一個字元 Hi, Swift!!!?
str.removeAtIndex( str.endIndex.predecessor() ) // 移除一個字元,在索引處。 // 傳回 ?
str.removeRange( str.endIndex.advancedBy(-)..<str.endIndex ) //移除一個區間。Hi, Swift!