Swift3.0語言教程查詢字符集和子字串
Swift3.0語言教程查詢字符集和子字串
Swift3.0語言教程查詢字符集和子字串,在字串中當字元內容很多時,我們就需要使用到查詢字符集或者子字串的方法。以下我們將講解3種查詢字符集和子字串的方法,判斷字串中是否包含某個給定字串、搜尋字符集或者子字串和列舉字串。
1.判斷字串中是否包含某個給定字串
NSString提供了3種方法用於判斷字串是否包含其他字串。它們分別為contains(_:)、localizedCaseInsensitiveContains(_:)和localizedStandardContains(_:)方法。
(1)contains(_:)方法用來判斷字串A是否包含aString字串,其語法形式如下:
func contains(_ str: String) -> Bool
其中,str用來指定一個字串。
【示例1-40】以下將判斷在字串a中是否包含"Hello"、"ello"和"eo"字串。
import Foundation
var a=NSString(string:"Hello,World")
//判斷在字串a中是否包含"Hello"字串
if(a.contains("Hello")){
print("a字串中包含Hello字串")
}else{
print("a字串中不包含Hello字串")
}
//判斷在字串a中是否包含"ello"字串
if(a.contains("ello")){
print("a字串中包含ello字串")
}else{
print("a字串中不包含ello字串")
}
//判斷在字串a中是否包含"eo"字串
if(a.contains("eo")){
print("a字串中包含eo字串")
}else{
print("a字串中不包含eo字串")
}
執行結果如下:
a字串中包含Hello字串
a字串中包含ello字串
a字串中不包含eo字串
(2)localizedCaseInsensitiveContains(_:)方法的功能是判斷字串A是否包含字串B,不區分大小寫,其語法形式如下:
func localizedCaseInsensitiveContains(_ str: String) -> Bool
其中,str用來指定一個字串。
【示例1-41】以下將判斷在字串a中是否包含"hello"、"ello"和"eo"字串。
import Foundation
var a=NSString(string:"Hello,World")
//判斷在字串a中是否包含"Hello"字串
if(a.localizedCaseInsensitiveContains("hello")){
print("a字串中包含hello字串")
}else{
print("a字串中不包含hello字串")
}
//判斷在字串a中是否包含"ello"字串
if(a.localizedCaseInsensitiveContains("ello")){
print("a字串中包含ello字串")
}else{
print("a字串中不包含ello字串")
}
//判斷在字串a中是否包含"eo"字串
if(a.localizedCaseInsensitiveContains("eo")){
print("a字串中包含eo字串")
}else{
print("a字串中不包含eo字串")
}
執行結果如下:
a字串中包含hello字串
a字串中包含ello字串
a字串中不包含eo字串
(3)localizedStandardContains(_:)方法可以用來判斷本地化的字串A是否包含字串B,其語法形式如下:
func localizedStandardContains(_ str: String) -> Bool
其中,str用來指定一個字串。
【示例1-42】以下將判斷在字串a中是否包含"He"字串。
import Foundation
var a=NSString(string:"Hello,World")
if(a.localizedStandardContains("He")){
print("a字串中包含He字串")
}else{
print("a字串中不包含He字串")
}
執行結果如下:
a字串中包含He字串
2.搜尋字符集或者子字串
在上文中判斷字串中是否包含某個給定字串其實就是對字串的一種搜尋,它返回的是一個Bool值。為了讓搜尋更為詳細,我們將使用下面的內容實現,也就是搜尋字符集或者子字串。
(1)搜尋字符集
在字串中如果我們需要搜尋指定字符集(字符集表示一個字元),需要使用到NSString中的3個方法,分別為:rangeOfCharacter(from:)、rangeOfCharacter(from:options:)和rangeOfCharacter(from:options:range:)方法。
rangeOfCharacter(from:)方法實現的功能是搜尋指定的字符集,其語法形式如下:
func rangeOfCharacter(from searchSet: CharacterSet) -> NSRange
其中,searchSet用來指定字符集。
【示例1-43】以下將在字串中搜尋字符集c,並輸出字符集c的第一個位置。
import Foundation
var a=NSString(string:"Hello,World")
var c:CharacterSet=NSCharacterSet(charactersIn:"W") as CharacterSet
print(a.rangeOfCharacter(from: c).location) //搜尋字符集
執行結果如下:
6
rangeOfCharacter(from:options:)方法和rangeOfCharacter(from:)方法的功能類似,但是它比rangeOfCharacter(from:)方法多了一個mask引數,該引數可以用來指定一個選項標記(這個標記可以作為搜尋的條件)。其語法形式如下:
func rangeOfCharacter(from searchSet: CharacterSet, options mask: NSString.CompareOptions = []) -> NSRange
【示例1-44】以下將使用rangeOfCharacter(from:options:)方法對指定字符集進行搜尋,並輸出字符集的第一個位置。
import Foundation
var a=NSString(string:"Hello,World")
var c:CharacterSet=NSCharacterSet(charactersIn:"r") as CharacterSet
print(a.rangeOfCharacter(from: c, options: NSString.CompareOptions.caseInsensitive).location)
執行結果如下:
8
rangeOfCharacter(from:options:range:)方法和rangeOfCharacter(from:options:)方法的功能類似,但是它比rangeOfCharacter(from:options:)方法多了一個rangeOfReceiverToSearch引數,該引數可以設定搜尋的範圍。其語法形式如下:
func rangeOfCharacter(from searchSet: CharacterSet, options mask: NSString.CompareOptions = [], range rangeOfReceiverToSearch: NSRange) -> NSRange
【示例1-45】以下將使用rangeOfCharacter(from:options:range:)方法對指定字符集進行搜尋,並輸出字符集的第一個位置。
import Foundation
var a=NSString(string:"Hello,World")
var c:CharacterSet=NSCharacterSet(charactersIn:"r") as CharacterSet
print(a.rangeOfCharacter(from: c, options: NSString.CompareOptions.caseInsensitive, range: NSMakeRange(3, 7)).location) //搜尋字符集
print(a.rangeOfCharacter(from: c, options: NSString.CompareOptions.caseInsensitive, range: NSMakeRange(0, 3)).location) //搜尋字符集
執行結果如下:
8
9223372036854775807
(2)搜尋字串
在字串中如果我們需要搜尋指定子字串,需要使用到NSString中的5個方法,分別為:localizedStandardRange(of:)、range(of:)、range(of:options:)、range(of:options:range:)和range(of:options:range:locale:)方法。其中,localizedStandardRange(of:)方法是在本地化的字串A中搜尋子字串,其語法形式如下:
func localizedStandardRange(of str: String) -> NSRange
其中,str用來指定一個子字串。
【示例1-46】以下將搜尋子字串,並輸出子字串的第一個位置。
import Foundation
var a=NSString(string:"Hello,World")
//搜尋子字串
print(a.localizedStandardRange(of: "lo").location)
print(a.localizedStandardRange(of: "H").location)
print(a.localizedStandardRange(of: "B").location)
執行結果如下:
3
0
9223372036854775807
range(of:)方法的功能是對子字串進行搜尋。其語法形式如下:
func range(of searchString: String) -> NSRange
其中,searchString用來指定一個子字串。
【示例1-47】以下將搜尋子字串,並輸出子字串的第一個位置。
import Foundation
var a=NSString(string:"Hello,World")
print(a.range(of: "World").location) //搜尋子字串
執行結果如下:
6
range(of:options:)方法和range(of:)方法的功能類似,但是它比range(of:)方法多了一個mask引數,該引數可以用來指定一個選項標記(這個標記可以作為搜尋的條件)。其語法形式如下:
func range(of searchString: String, options mask: NSString.CompareOptions = []) -> NSRange
【示例1-48】以下將搜尋子字串,並輸出子字串的第一個位置。
import Foundation
var a=NSString(string:"Hello,World")
print(a.range(of: "LD", options: NSString.CompareOptions.caseInsensitive).location) //搜尋子字串
執行結果如下:
9
range(of:options:range:)方法和range(of:options:)方法的功能類似,但是它比range(of:options:)方法多了一個rangeOfReceiverToSearch引數,該引數可以設定搜尋的範圍。其語法形式如下:
func range(of searchString: String, options mask: NSString.CompareOptions = [], range rangeOfReceiverToSearch: NSRange) -> NSRange
【示例1-49】以下將搜尋子字串,並輸出子字串的第一個位置。
import Foundation
var a=NSString(string:"Hello,World")
print(a.range(of: "LL", options: NSString.CompareOptions.caseInsensitive, range: NSMakeRange(0, 7)).location)
執行結果如下:
2
range(of:options:range:locale:)方法和range(of:options:range:)方法的功能類似,但是它比range(of:options:range:)方法多了一個locale引數,該引數可以語言環境。其語法形式如下:
func range(of searchString: String, options mask: NSString.CompareOptions = [], range rangeOfReceiverToSearch: NSRange, locale: Locale?) -> NSRange
【示例1-50】以下將搜尋子字串,並輸出子字串的第一個位置。
import Foundation
var a=NSString(string:"Hello,World")
var l=Locale.current
print(a.range(of: "O,", options: NSString.CompareOptions.caseInsensitive, range: NSMakeRange(0, 7), locale: l).location)
執行結果如下:
4
3.列舉字串
在字串中,如果我們想要遍歷輸出字元或者子字串可以使用迴圈,當然,也可以使用NSString中提供的兩個方法,一個是enumerateLines(_:)方法,另一個是enumerateSubstrings(in:options:using:)方法。
(1)enumerateLines(_:)方法可以列舉出字串中所有的行,其語法形式如下:
func enumerateLines(_ block: (String, UnsafeMutablePointer<ObjCBool>) -> Void)
其中,block用來指定列舉執行的塊函式。
【示例1-51】以下將使用enumerateLines(_:)方法列舉出字串a中的所有行。
import Foundation
var a=NSString(string:"Hello\nWorld\nSwift\niOS\nXcode\nMac")
//列舉
a.enumerateLines({
(str:String,obj:UnsafeMutablePointer<ObjCBool>) in
print(str)
})
執行結果如下:
Hello
World
Swift
iOS
Xcode
Mac
(2)enumerateSubstrings(in:options:using:)方法的功能是在字串的指定範圍內,列舉子字串,其語法形式如下:
func enumerateSubstrings(in range: NSRange, options opts: NSString.EnumerationOptions = [], using block: (String?, NSRange, NSRange, UnsafeMutablePointer<ObjCBool>) -> Void)
其中,range用來指定範圍,opts是一個列舉選項,用來指定子字串和列舉風格的型別,block用來指定列舉執行的塊函式。
【示例1-52】以下將使用enumerateSubstrings(in:options:using:)方法將列舉字串中的子字串。
import Foundation
var a=NSString(string:"The hard part isn’t making the decision. It’s living with it.")
//列舉
a.enumerateSubstrings(in: NSMakeRange(0, a.length), options: NSString.EnumerationOptions.byWords, using: {
(substring:String?, substringRage:NSRange, enclosingRange:NSRange, obj:UnsafeMutablePointer<ObjCBool>) in
print(substring!)
})
執行結果如下:
The
hard
part
isn’t
making
the
decision
It’s
living
with
it
Swift3.0語言教程查詢字符集和子字串
相關閱讀:Swift3.0語言教程比較、判斷字串
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-2128294/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Swift3.0語言教程替換子字串Swift字串
- Swift3.0語言教程使用字串建立和初始化字串Swift字串
- SQL語言基礎(子查詢)SQL
- Swift3.0語言教程使用URL字串Swift字串
- Swift3.0語言教程組合字串Swift字串
- Swift3.0語言教程分割字串與擷取字串Swift字串
- Swift3.0語言教程使用路徑字串Swift字串
- Swift3.0語言教程獲取C字串Swift字串
- Swift3.0語言教程獲取字串長度Swift字串
- Swift3.0語言教程比較、判斷字串Swift字串
- Swift3.0語言教程字串大小寫轉化Swift字串
- SQL查詢語言基本教程(2) (轉)SQL
- SQL查詢語言基本教程(3) (轉)SQL
- Swift3.0語言教程使用編碼建立和初始化字串Swift字串
- Swift3.0語言教程使用指標建立和初始化字串Swift指標字串
- 子字串查詢演算法字串演算法
- Swift3.0語言教程字串轉換為數字值Swift字串
- Swift3.0語言教程使用佔位符格式建立和初始化字串Swift字串
- CoffeeScript攻略3.4:查詢子字串字串
- SQL查詢的:子查詢和多表查詢SQL
- sql語法相關子查詢與非相關子查詢SQL
- MySQL聯結查詢和子查詢MySql
- prometheus之查詢語言Prometheus
- C語言折半查詢C語言
- Laravel 子查詢語句用法Laravel
- Swift3.0語言教程字串與檔案的資料轉換Swift字串
- Swift3.0語言教程獲取字串編碼與雜湊地址Swift字串編碼
- 子查詢-表子查詢
- 關係型資料庫查詢語言 SQL 和圖資料庫查詢語言 nGQL 對比資料庫SQL
- 字串查詢和替換字串
- MySQL之連線查詢和子查詢MySql
- 區分關聯子查詢和非關聯子查詢
- exist-in和關聯子查詢-非關聯子查詢
- MySQL — 資料查詢語言MySql
- Kibana查詢語言(KQL)
- go語言實戰教程之管理員查詢功能、退出功能Go
- 利用leftJoinsub建立子查詢讓查詢語句groupBy和orderBy一起使用
- 什麼是SQL 語句中相關子查詢與非相關子查詢SQL