字符串String.Index和Range詳解


在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  

輸出結果:

轉自:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 【轉載】原文地址:std::string詳解作者:kieven2008 之所以拋棄char*的字符串而選用C++標...
    VAYY閱讀 657評論 0 2
  • NSRange : 表示范圍作用的結構體,3種方式創建 // 方式一 NSRange range; locatio...
    路墨閱讀 1,057評論 1 8
  • 【感恩有你】20170908學習力踐行記錄D116 踐行:早晨《熊多多》-出去玩吧指讀一遍 晚上《手指搖》-小汽車...
    恩恩媽閱讀 228評論 0 0
  • 我是從什么時候來時覺得父親真的開始承受不了打擊了呢? 他躲在小姨房子外邊痛哭是。鼻涕眼淚一起流,嘴里說著:這讓你小...
    云誰之思91閱讀 213評論 0 2
  • 昨天晚上他告訴我,他喜歡上別人了,莫名的顫抖無助,分手半個月來,一直反思自己是否做的不夠好,明明愛的那么認真,半個...
    Lucy_Wu閱讀 228評論 0 0