[Swift]擴展String類:extension String

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/ 
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-oedvequj-hs.html 
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html

請參考本博客另外一篇技術博文:git

《[Swift]字符串(String類、NSString類)經常使用操做》 github

  1 extension String {
  2     //獲取字符串首字符
  3     var first: String 
  4     {
  5         get{return String(self[startIndex])} 
  6     }
  7     
  8     // 獲取字符串尾字符
  9     var last: String 
 10     {     
 11         //注意最後一個字符的索引位置
 12         get{return String(self[index(before: self.endIndex)])} 
 13     }
 14     
 15     //字符串所表示數字的ASCII整數值(定義大寫爲字符值)
 16     var ASCII:Character  
 17     {
 18         get {return Character(UnicodeScalar(Int(self)!)!)}
 19     }
 20     
 21     //字符的ASCII整數值(定義小寫爲整數值)
 22     var ascii: Int {
 23         get{
 24             return Int(self.unicodeScalars.first!.value)
 25         }
 26     }
 27     
 28     //獲取指定索引位置的字符,返回爲字符串形式
 29     func charAt(_ num:Int) -> String
 30     {
 31         return String(self[index(self.startIndex,offsetBy: num)]) 
 32     }
 33     
 34     // 將字符串轉爲指定進制的Int
 35     //Radix is in range 2...36
 36     func convertToInt(_ num:Int) -> Int
 37     {
 38         //Radix is in range 2...36
 39         //判斷區間是否包含包含某個特定的值
 40         if (2...36).contains(num)
 41         {
 42             return Int(self, radix: num)!
 43         }
 44         return 0
 45     }    
 46     
 47     //獲取重複指定次數的字符串
 48     func repeatString(_ times: Int ) -> String
 49     {
 50         var result = String()
 51         for i in 0...times {
 52             result += self
 53         }
 54         return result 
 55     }
 56     
 57     //總體反轉字符串
 58     func reverse() -> String
 59     {
 60         return String(self.reversed())
 61     }
 62     
 63     // 截取字符串:從起始處到index
 64     // - Parameter index: 結束索引
 65     // - Returns: 子字符串
 66     func subStringTo(_ index: Int) -> String {
 67         let theIndex = self.index(self.startIndex,offsetBy:min(self.count,index))
 68         return String(self[startIndex...theIndex])
 69     }
 70     
 71     // 截取字符串:從index到結束處
 72     // - Parameter index: 開始索引
 73     // - Returns: 子字符串
 74     func subStringFrom(_ index: Int) -> String {
 75         let theIndex = self.index(self.endIndex, offsetBy: index - self.count)
 76         return String(self[theIndex..<endIndex])
 77     }
 78     
 79     // 截取字符串:指定區間
 80     // - Parameter range: 閉區間
 81     // - Returns: 子字符串
 82     func subStringInRange(_ range: CountableClosedRange<Int>) -> String {
 83         let start = self.index(self.startIndex, offsetBy: max(0, range.lowerBound))
 84         let end = self.index(self.startIndex, offsetBy: min(self.count, range.upperBound))
 85         return String(self[start...end])
 86     }
 87     
 88      // 截取字符串:指定索引和字符數
 89     // - begin: 開始截取處索引
 90     // - count: 截取的字符數量
 91     func subString(_ begin:Int,_ count:Int) -> String {
 92         let start = self.index(self.startIndex, offsetBy: max(0, begin))
 93         let end = self.index(self.startIndex, offsetBy:  min(self.count, begin + count))
 94         return String(self[start..<end]) 
 95     }
 96     
 97     //subscript函數能夠檢索數組中的值
 98     //直接按照索引方式截取指定索引的字符
 99     subscript (_ i: Int) -> Character {
100         //讀取字符
101         get {return self[index(startIndex, offsetBy: i)]}
102         
103         //修改字符
104         set
105         {
106             //轉換爲字符數組
107             var arr:[Character] = Array(self) 
108             arr[i] = newValue
109             self = String(arr)   
110         }
111     }
112     
113     //subscript函數能夠檢索數組中的值
114     //直接按照索引方式截取指定索引的字符串
115     subscript(_ numbers: Int...) -> String {
116         var str:String = String()
117         for num in numbers {
118             str.append(self[num])
119         }
120         return str
121     }
122     
123     //subscript函數能夠檢索數組中的值
124     //直接按照索引方式截取指定索引的字符串
125     subscript (bounds: CountableRange<Int>) -> Substring {
126         let start = index(startIndex, offsetBy: bounds.lowerBound)
127         let end = index(startIndex, offsetBy: bounds.upperBound)
128         return self[start ..< end]
129     }
130     
131     subscript (bounds: CountableClosedRange<Int>) -> Substring {
132         let start = index(startIndex, offsetBy: bounds.lowerBound)
133         let end = index(startIndex, offsetBy: bounds.upperBound)
134         return self[start ... end]
135     }
136     
137     subscript (bounds: CountablePartialRangeFrom<Int>) -> Substring {
138         let start = index(startIndex, offsetBy: bounds.lowerBound)
139         let end = index(endIndex, offsetBy: -1)
140         return self[start ... end]
141     }
142     
143     subscript (bounds: PartialRangeThrough<Int>) -> Substring {
144         let end = index(startIndex, offsetBy: bounds.upperBound)
145         return self[startIndex ... end]
146     }
147     
148     subscript (bounds: PartialRangeUpTo<Int>) -> Substring {
149         let end = index(startIndex, offsetBy: bounds.upperBound)
150         return self[startIndex ..< end]
151     }
152 }

 示例代碼: 數組

 1 var str = "stringthen"
 2 print(str.first)
 3 // s
 4 print(str.last)
 5 // n
 6 print("116".ASCII)
 7 // t   注:ASCII中t爲116
 8 print("t".ascii)
 9 // 116   注:ASCII中t爲116
10 print(str.charAt(3))
11 // i
12 print("F".convertToInt(16))
13 // 15
14 print(str.repeatString(3))
15 // stringthenstringthenstringthenstringthen
16 print(str[3])
17 // i (獲取第三個字符)
18 str = "123456789"
19 str[3] = "0"
20 print(str)
21 // str0ngthen (修改索引位置的字符)
22 print(str[3,6])
23 // it (獲取第3個和第6個字符,兩個字符組成的字符串)
24 print(str[3..<6]) 
25 // ing (獲取連續的第3個到第5個字符,三個字符組成的字符串)
26 print(str[3...6])
27 // ingt (獲取連續的第3個到第6個字符,四個字符組成的字符串)
28 print(str.subStringTo(3))
29 // stri
30 print(str.subStringFrom(3))
31 // ingthen
32 print(str.subStringInRange(3...6))
33 // ingt
34 print(str.subString(3,4))
35 // ingt
36 //stride循環中用索引
37 for index in stride(from:str.count - 2, through: 0, by: -1)
38 {
39     print(str[index])
40     print(str[0...index])
41     print(str[0..<index])
42 }
43 /*
44 s
45 n
46 t
47 116
48 i
49 15
50 stringthenstringthenstringthenstringthen
51 i
52 123056789
53 07
54 056
55 0567
56 1230
57 056789
58 0567
59 0567
60 8
61 12305678
62 1230567
63 7
64 1230567
65 123056
66 6
67 123056
68 12305
69 5
70 12305
71 1230
72 0
73 1230
74 123
75 3
76 123
77 12
78 2
79 12
80 1
81 1
82 1
83 */
相關文章
相關標籤/搜索