func someMethodOfRange() {
/**
* 字符串與Range的用法
*/
//1.截取字符串(字符)在整個字符串中所在的位置,返回的類型爲 Index
var str = "abcdefghi"
let startIndex = str.rangeOfString("cde")!.startIndex
print(startIndex)//2
let endIndex = str.rangeOfString("cde")!.endIndex
print(endIndex)//5
//2、根據字符串的索引來獲取對應的字符
let text = "abcdefghi"
let index2 = text.startIndex.advancedBy(2) //will call succ 2 times
print(index2)//2
let lastChar: Character = text[index2] //now we can index!
print(lastChar)//c
let lastChar2 = text.characters[index2] //will do the same
print(lastChar2)//c
//3.截取字符串(字符)在整個字符串中所在的範圍 、返回值類型 Range<Index>
let range: Range<String.Index> = text.rangeOfString("bc")!
print(range)//1..<3
let index3: Int = text.startIndex.distanceTo(range.startIndex)
print(index3)//1
let index4: Int = text.startIndex.distanceTo(range.endIndex)
print(index4)//3
print(text.characters.count)//9
let abc = "@救123"
print(abc.characters.count)//5
//4.0 Index --> Int
let range: Range<String.Index> = self.text!.rangeOfString(text)!
let index3: Int = self.text!.startIndex.distanceTo(range.startIndex)
let index4: Int = self.text!.startIndex.distanceTo(range.endIndex)
//一個字符串。指標值可以通過調用predecessor()方法訪問其 先前 指標,其指標successor()下一個指標 調用方法。字符串中的任何指標可從任何其他指數通過把這些方法結合在一起,或通過使用--(_:)方法。試圖訪問一個字符串的範圍以外的索引會引發一個運行時錯誤
let greeting = "123456789"
greeting[greeting.startIndex]
print(greeting)
print("起使位置\(greeting.startIndex)")//0
print("終點位置\(greeting.endIndex)")//9
print(greeting[greeting.startIndex])//1
greeting[greeting.endIndex.predecessor()]
print(greeting[greeting.endIndex.predecessor()])//9
print(greeting.endIndex.predecessor())//8
print(greeting.startIndex.successor())//1
greeting[greeting.startIndex.successor()]
print(greeting[greeting.startIndex.successor()])//2
let index = greeting.startIndex.advancedBy(7)
greeting[index]
print(greeting[index])//8
//試圖在字符串的範圍以外的索引處訪問一個字符,將引發一個運行時錯誤。”
//greeting[greeting.startIndex.predecessor()]//cuowu
//print(greeting[greeting.endIndex])//cuowu
//越界
//greeting[greeting.endIndex]
//greeting.endIndex.successor()
//““Use the <indices> property of the <characters> property to 創建一個字符串中訪問單個字符的所有索引的範圍。”
for index in greeting.characters.indices {
print("\(greeting[index])",terminator: "")
// print("**")
}
}
//相關的應用:在UILabel裏面,不同文本顯示不同字體的大小
extension UILabel {
/*
*設置text的字體大小
*/
func settingLabelTextKitWithText(text:String,font:UIFont) {
if text.isEmpty {//通過檢查其 Boolean 類型的 isEmpty 屬性來判斷該字符串是否爲空:
print("什麼都沒有")
return
}else {
//方法1
let attrstring:NSMutableAttributedString = NSMutableAttributedString(string: self.text!)
let str = NSString(string: self.text!)
let theRange = str.rangeOfString(text)
attrstring.addAttribute(NSFontAttributeName, value: font, range: theRange)
self.attributedText = attrstring
/**
// 方法2
let attrstring:NSMutableAttributedString = NSMutableAttributedString(string: self.text!)
let range: Range<String.Index> = self.text!.rangeOfString(text)!
let index3: Int = self.text!.startIndex.distanceTo(range.startIndex)
let index4: Int = self.text!.startIndex.distanceTo(range.endIndex)
attrstring.addAttribute(NSFontAttributeName, value: font, range: NSMakeRange(index3, index4 - index3))
self.attributedText = attrstring
*/
}
}