Swift-NSPredicate学习整理
来源:互联网 发布:闲鱼淘宝介入多久 编辑:程序博客网 时间:2024/05/29 19:19
NSString+Extension.swift
//////////////////////////////////////////////////////////
import Foundation
extension String
{
/// 判断是否是手机号
func isPhoneNumber() ->Bool {
let pattern ="^1[345789]\\d{9}$"
returnNSPredicate.init(format:"SELF MATCHES %@", pattern).evaluateWithObject(self)
}
/// 判断是否是邮政编码
func isPostCode() ->Bool {
let pattern ="^\\d{6}$"
returnNSPredicate.init(format:"SELF MATCHES %@", pattern).evaluateWithObject(self)
}
}
//判断手机号码格式
if !cellPhoneView.inputFiled.text!.isPhoneNumber()
{
showErrorMessage("手机号码格式不对")
return;
}
// 判断邮政编码格式
if !postCodeView.inputFiled.text!.isPostCode() {
showErrorMessage("邮政编码格式不对")
return
}
Swift-NSPredicate学习整理
有两种初始化的方式:
- NSPredicate(format:"")
- NSPredicate.init(format:"")
用法
1.检索值是否存在一个范围区间里
var number2 = 0var numberPre2 = NSPredicate.init(format: "SELF BETWEEN{1,5}")var bool2 = numberPre2.evaluateWithObject(number2)
打印结果
当number2 = 0 打印:bool2 为false当number2 = 1 打印:bool2 为true
2.检索数组元素中是否包含给定字符串
var number2 = "dd"var numberPre2 = NSPredicate.init(format: "SELF IN {'dd','bb'}")var bool2 = numberPre2.evaluateWithObject(number2)
其中出现的关键字
(BETWEEN、IN)称为范围运算符
SELF表示的是字符串本身,在本例代码中相当于变量number2
当然以数组的形式初始化NSPredicate也是可以的
var sets = ["dd","ss"]var numberPre2 = NSPredicate.init(format: "SELF IN %@",sets)
3.字符串操作相关
1>判断字符串中是否包含另一个字符串CONTAINS
var str3 = "dd"var pre3 = NSPredicate.init(format: "SELF CONTAINS[cd] %@", str3)var bool3 = pre3.evaluateWithObject("dsadd")
打印结果
当str3="da" 打印:bool3=false当str3="dd" 打印:bool3=true
2>判断是否以某个字符串开头BEGINSWITH
var str3 = "dd"var pre3 = NSPredicate.init(format: "SELF BEGINSWITH[cd] %@", str3)var bool3 = pre3.evaluateWithObject("ddacd")
打印结果
当str3="da" 打印:bool3=false当str3="dd" 打印:bool3=true
3>判断是否以某个字符串结尾ENDSWITH
var str3 = "dd"var pre3 = NSPredicate.init(format: "SELF ENDSWITH[cd] %@", str3)var bool3 = pre3.evaluateWithObject("dcadd")
打印结果
当str3="da" 打印:bool3=false当str3="dd" 打印:bool3=true
注:
[c]不区分大小写
[d]不区分发音符号即没有重印符号
[cd]表示即不区分大小写,也不区分发音符号
4.模糊查询LINK通配符
5.正则表达式MATCHES
//匹配纯数字var number = "^[0-9]+$"var numberPre = NSPredicate.init(format: "SELF MATCHES %@", number)var boo3 = numberPre.evaluateWithObject("13140000000")
打印结果为 true
6.基本操作符运算
let predicate = NSPredicate(format: "(SELF > 20) AND (SELF < 30)") let boo7 = predicate.evaluateWithObject(num)print(boo7)
打印结果
当num = 20 打印:false当num = 21 打印:true
实际应用
1.检索一个数组中所有包含此字符串的元素,并返回一个结果的数组
let arr4 = ["beijing" , "shanghai" , "guangzhou" , "wuhan"] asNSMutableArraylet str4 = "ang"let pre4 = NSPredicate(format: "SELF CONtAINS %@", str4)arr4.filterUsingPredicate(pre4)
打印arr4 结果为
["shanghai","guangzhou"]
2.判断字符串首字符是否为字母
let regex1 = "[A-Za-z]+"let pre5 = NSPredicate(format: "SELF MATCHES %@" , regex1)let bool5 = pre5.evaluateWithObject("2")
3.字符串替换//方法调用需要做异常处理do{ let pattern = "(encoding=\")[^\"]+(\")" let regex = try NSRegularExpression(pattern:pattern , options:NSRegularExpressionOptions.CaseInsensitive) let sample = "<xml encoding=\"abc\"></xml><xmlencoding=\"def\"></xml><xml encoding=\"ttt\"></xml>" print(sample) let result = regex.stringByReplacingMatchesInString(sample, options: NSMatchingOptions.ReportProgress, range: NSMakeRange(0, sample.characters.count), withTemplate: "$1utf-8$2") print(result) }catch{ print(error) }
打印结果为<xml encoding="abc"></xml><xml encoding="def"></xml><xml encoding="ttt"></xml><xml encoding="utf-8"></xml><xml encoding="utf-8"></xml><xml encoding="utf-8"></xml>
4.提取字符串//组装一个字符串,需要把里面的网址解析出来//方法调用需要做异常处理 do{ let urlString = "<meta/><link/><title>1Q84BOOK1</title></head><body>" let pattern = "(?<=title\\>).*(?=</title)" let regex = try NSRegularExpression(pattern: pattern , options: NSRegularExpressionOptions.CaseInsensitive) let firstMatch = regex.firstMatchInString(urlString, options: NSMatchingOptions.ReportProgress, range: NSMakeRange(0, urlString.characters.count)) if firstMatch != nil { let resultRange = firstMatch?.rangeAtIndex(0) let result = (urlString as NSString).substringWithRange(resultRange!) print(result) } }catch{ print(error) }
打印结果
"1Q84BOOK1"
- Swift-NSPredicate学习整理
- swift学习资源整理
- Swift - 学习资料整理
- swift学习资料整理
- swift动态编写NSPredicate
- NSPredicate学习
- Xcode学习笔记---NSPredicate
- [iOS学习]NSPredicate
- NSPredicate的学习
- IOS NSPredicate学习
- NSPredicate的学习讲解
- 非常全面的Swift学习资料整理
- 全面的Swift学习资料整理
- Swift开发教程 Swift编程语言 学习整理
- iOS SDK详解之NSPredicate(Swift)
- iOS SDK详解之NSPredicate(Swift)
- OC之NSPredicate(谓词)学习
- iOS NSPredicate的学习讲解
- Elastic-Job使用步骤简介
- 个人笔记4
- matlab subplot 3
- CSS的类名命名规范
- TCP/IP详解学习笔记(10)-TCP连接的建立与中止
- Swift-NSPredicate学习整理
- Bash shell 重定向
- ECharts-Java使用Java快速开发ECharts图表
- Python的列表(list)的命名规则和方法
- Swift 小工具 图片重命名工具
- TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流
- PHP服务器端的思想
- Elastic-Job运维平台介绍
- 小程序 -- 计算器