在Swift字符串的檢索中,有時候返回的可能是一個范圍,而不是一個具體的位置。這就要用到Swift中Range的概念。我們對此來進行詳解。
1、字符串中檢索某個單詞方法:rangeOfString
var str = "Hello Apple.Hello Swift"
str.rangeOfString("Hello")//正向檢索;
str.rangeOfString("Hello", options: NSStringCompareOptions.BackwardsSearch)//反向檢索;
str.rangeOfString("swift")//大小寫完全匹配
str.rangeOfString("swift", options: NSStringCompareOptions.CaseInsensitiveSearch)//忽略大小寫
輸出結果:
結果分析:
可以看到rangeOfString的返回值是一個Range范圍。如果為空,則返回nil。rangeOfString()方法有很多參數可選,大家可以試一試。
2、從字符串指定范圍查找特定字符串
有時候根據我們的需求,并不是要從整個字符串長度去檢索某個String,可能是在一個范圍內檢索,這里就要用到String.Index.
var str = "Hello Apple.Hello Swift"
let startIndex:String.Index = str.startIndex
let endIndex:String.Index = advance(startIndex, 10)
let strRange = Range<String.Index>(start:startIndex,end:endIndex)
str.rangeOfString("App", options: NSStringCompareOptions.CaseInsensitiveSearch, range: strRange)
輸出結果:
3、截取子串
Swift支持截取從某位置開始截取指定長度的字符串。
var str = "Hello Apple.Hello Swift"
var toIndex = advance(str.startIndex, 4)
str.substringToIndex(toIndex)//截取從開始到第4個位置的字符串;
var fromIndex = advance(str.startIndex, 7)
str.substringFromIndex(fromIndex)//截取從第7個位置開始到最后的字符串;
str.substringWithRange(Range<String.Index>(start: toIndex, end: fromIndex))//截取從第4個位置到第7個位置的字符串;
輸出結果:
結果分析:
截取之后,原來的字符串不變。
4、插入字符:insert()
Swift可以在字符串的指定位置插入一個字符。代碼如下:
var str = "Hello Apple.Hello Swift"
var insertIndex = advance(str.startIndex, 5)//在第5個位置處插入
str.insert("!", atIndex: insertIndex)//插入一個感嘆號
輸出結果:
5、移除字符:remove()
Swift可以在指定的字符串的某個位置刪除一個字符。代碼如下:
var str = "Hello Apple.Hello Swift"
var insertIndex = advance(str.startIndex, 5)//在第5個位置處插入
str.insert("!", atIndex: insertIndex)//插入一個感嘆號
str.removeAtIndex(insertIndex)
str
輸出結果:
結果分析:
實驗可知,insert()方法和removeAtIndex()方法會修改原來的字符串。
6、替換字符串
在Swift中可以使用一個字符串替換另一個字符串,具體代碼如下:
var str = "Hello Apple.Hello Swift" //把Hello替換為Hi
var replaceEndIndex = advance(str.startIndex, 5)//從開始字符到第五個字符(5是開區間)
str.stringByReplacingCharactersInRange(Range<String.Index>(start:str.startIndex,end:replaceEndIndex), withString: "hi")//替換為Hi
輸出結果:
轉自: