整理自慕课网liuyubobobo老师在《玩儿转Swift》课程中的讲解,在此表示感谢!同时推荐这套视频课程http://www.imooc.com/learn/127
var str = "Welcome to Play Swift! Step by step to learn Swift."
// Range的用法和相关字符串的操作代码片段
str.rangeOfString(“Step”) // 字符串片段“Step”所处的字符范围 23..<27, 也即第22~26的范围位置
另举一个更简单的例子:
var s1 = "123456789"
s1.rangeOfString("23”) ->>> {some “1..<3”}, 返回一个类型为NSRange的范围1~2,实际是2~3因为index以0开始计算。
注意此处NSRange,苹果文档解释为
A structure used to describe a portion of a series—such as characters in a string or objects in an NSArray object.
继续, 以下时反向查找,返回NSRange类型
str.rangeOfString("Swift", options: NSStringCompareOptions.BackwardsSearch) ->>> {some 45..<50}
此处options还可以为 CaseInsensitiveSearch,也即大小写不敏感的查找模式
str.startIndex ->>> 0
str.endIndex ->>> 51, 此处可理解为该字符串总长度为51,有一共51个字符
let aRange = Range<String.Index>(start:str.startIndex, end:str.endIndex)
以上常量aRange是一个NSRange类型的值, 也即是 0..<51, 表示变量str所指向的字符串的范围
需要注意的是,在Java等语言中,数组和字符串下标index是Int类型,但在Swift,index下标是String.Index类型。
let startIndex:String.Index = str.startIndex
let endIndex:String.Index = advance(str.startIndex, 12) //设置后下标,由前下标后挪12位获得
let searchRange = Range<String.Index>(start:startIndex, end:endIndex) //设置一个range,其实就是0..<10
str.rangeOfString("to", options: NSStringCompareOptions.CaseInsensitiveSearch, range:searchRange) // 在指定的range内搜索字符串to,模式为大小写不敏感,返回在该range内找到的指定字符串的range..,也即 {Some "8..<10"}
Swift语言中 String 的一些操作方法
原文:http://www.cnblogs.com/summer2012/p/4077498.html