Cocoa 框架中的 NSPredicate 用於查詢,用法類似於 SQL 中的 Where
初始化
NSPredicate(format:"")
用法
查詢值是否存在於一個區間內
var number2 = 0 var numberPre2 = NSPredicate(format: "SELF BETWEEN{1,5}") var bool2 = numberPre2.evaluateWithObject(number2)結果
//當number2 = 0 印出:bool2 為false //當number2 = 1 印出:bool2 為true字串相關
- 判斷字串中是否包含另一個字串
結果var str3 = "dd" var pre3 = NSPredicate(format: "SELF CONTAINS[cd] %@", str3) var bool3 = pre3.evaluateWithObject("dsadd")//當str3 = "da" 印出:bool3=false //當str3 = "dd" 印出:bool3=true - 判斷是否以某個字串做開頭
結果var str3 = "dd" var pre3 = NSPredicate(format: "SELF BEGINSWITH[cd] %@", str3) var bool3 = pre3.evaluateWithObject("ddacd")//當str3 = "da" 印出:bool3=false //當str3 = "dd" 印出:bool3=true - 判斷是否以某個字串做結尾
結果var str3 = "dd" var pre3 = NSPredicate(format: "SELF ENDSWITH[cd] %@", str3) var bool3 = pre3.evaluateWithObject("dcadd")//當str3 = "da" 打印:bool3=false //當str3 = "dd" 打印:bool3=true
- 判斷字串中是否包含另一個字串
正規表示
var number = "^[0-9]+$" //判斷字串是否為 0 - 9 的純數字 var numberPre = NSPredicate(format: "SELF MATCHES %@", number) var boo3 = numberPre.evaluateWithObject("13140000000")結果
//印出結果為 true也可一次給定兩種以上的條件
var number = "^[0-9]+[A-Z]$" //判斷字串是否為數字 0 - 9 開頭, A - Z 結尾 var numberPre = NSPredicate(format: "SELF MATCHES %@", number) var boo3 = numberPre.evaluateWithObject("938572jf89G")結果
//印出結果為 true常用正規表示式
| 正規表示式 | 說明及範例 | 比對不成立之字串 |
|---|---|---|
| /a/ | 含字母 “a” 的字串,例如 “ab”, “bac”, “cba” | “xyz” |
| /a./ | 含字母 “a” 以及其後任一個字元的字串,例如 “ab”, “bac” | “a”, “ba” |
| /^xy/ | 以 “xy” 開始的字串,例如 “xyz”, “xyab” | “axy”, “bxy” |
| /xy$/ | 以 “xy” 結尾的字串,例如 “axy”, “abxy” | “xya”, “xyb” |
| [135] | 包含 “1” 或 “3” 或 “5” 的字串,例如:”a3b”, “1xy” | “y2k” |
| [0-9] | 含數字之字串 | 不含數字之字串 |
| [a-z0-9] | 含數字或小寫字母之字串 | 不含數字及小寫字母之字串 |
| [a-zA-Z0-9] | 含數字或字母之字串 | 不含數字及字母之字串 |
| [^0-9] | 不含數字之字串 | 含數字之字串 |
| [^aeiouAEIOU] | 不含母音之字串 | 含母音之字串 |
| [^\^] | 不含 “^” 之字串,例如 “xyz”, “abc” | “xy^”, “a^bc” |
| 正規表示式的特定字元 | 說明 | 等效的正規表示式 |
|---|---|---|
| \d | 數字 | [0-9] |
| \D | 非數字 | [^0-9] |
| \w | 數字、字母、底線 | [a-zA-Z0-9_] |
| \W | 非 \w | [^a-zA-Z0-9_] |
| \s | 空白字元 | [ \r\t\n\f] |
| \S | 非空白字元 | [^ \r\t\n\f] |
| 正規表示式 | 說明 |
|---|---|
| /a?/ | 零或一個 a |
| /a+/ | 一或多個 a |
| /a*/ | 零或多個 a |
| /a{4}/ | 四個 a |
| /a{5,10}/ | 五至十個 a |
| /a{5,}/ | 至少五個 a |
| /a{,3}/ | 至多三個 a |
| /a.{5}b/ | a 和 b中間夾五個(非換行)字元 |
| 字元 | 說明 | 簡單範例 |
|---|---|---|
| \ | 避開特殊字元 | /A*/ 可用於比對 “A”,其中 是一個特殊字元,為避開其特殊意義,所以必須加上 “\” |
| ^ | 比對輸入列的啟始位置 | /^A/ 可比對 “Abcd” 中的 “A”,但不可比對 “aAb” |
| $ | 比對輸入列的結束位置 | /A$/ 可比對 “bcdA” 中的 “A”,但不可比對 “aAb” |
| * | 比對前一個字元零次或更多次 | /bo*/ 可比對 “Good boook” 中的 “booo”,亦可比對 “Good bk” 中的 “b” |
| + | 比對前一個字元一次或更多次,等效於 {1,} | /a+/ 可比對 “caaandy” 中的 “aaa”,但不可比對 “cndy” |
| ? | 比對前一個字元零次或一次 | /e?l/ 可比對 “angel” 中的 “el”,也可以比對 “angle” 中的 “l” |
| . | 比對任何一個字元(但換行符號不算) | /.n/ 可比對 “nay, an apple is on the tree” 中的 “an” 和 “on”,但不可比對 “nay” |
| (x) | 比對 x 並將符合的部分存入一個變數 | /(a) and (b)/ 可比對 “aaa and bb” 中的 “aaa” 和 “bb”,並將這兩個比對得到的字串設定至變數 RegExp.$1 和 RegExp.$2。 |
| xy | 比對 x 或 y | /ab/g 可比對 “aaa and bb” 中的 “aaa” 和 “bb” |
| {n} | 比對前一個字元 n 次,n 為一個正整數 | /a{3}/ 可比對 “lllaaalaa” 其中的 “aaa”,但不可比對 “aa” |
| {n,} | 比對前一個字元至少 n 次,n 為一個正整數 | /a{3,}/ 可比對 “aa aaa aaaa” 其中的 “aaa” 及 “aaaa”,但不可比對 “aa” |
| {n,m} | 比對前一個字元至少 n 次,至多 m 次,m、n 均為正整數 | /a{3,4}/ 可比對 “aa aaa aaaa aaaaa” 其中的 “aaa” 及 “aaaa”,但不可比對 “aa” 及 “aaaaa” |
| [xyz] | 比對中括弧內的任一個字元 | /[ecm]/ 可比對 “welcome” 中的 “e” 或 “c” 或 “m” |
| [^xyz] | 比對不在中括弧內出現的任一個字元 | /[^ecm]/ 可比對 “welcome” 中的 “w”、”l”、”o”,可見出其與 [xyz] 功能相反。(同時請注意 /^/ 與 [^] 之間功能的不同。) |
| [\b] | 比對退位字元(Backspace character) | 可以比對一個 backspace ,也請注意 [\b] 與 \b 之間的差別 |
| \b | 比對英文字的邊界,例如空格 | 例如 /\bn\w/ 可以比對 “noonday” 中的 ‘no’ ;/\wy\b/ 可比對 “possibly yesterday.” 中的 ‘ly’ |
| \B | 比對非「英文字的邊界」 | 例如, /\w\Bn/ 可以比對 “noonday” 中的 ‘on’ ,另外 /y\B\w/ 可以比對 “possibly yesterday.” 中的 ‘ye’ |
![[Oracle SQL Debug] 解決ORA-01489的問題](https://static.coderbridge.com/images/covers/default-post-cover-1.jpg)

![[day 04] Class & constructor: 吃語法糖別噎到](https://static.coderbridge.com/images/covers/default-post-cover-3.jpg)