Swift 开发的工具类,主要是提供正则表达式及其它,Github会长期维护
生活随笔
收集整理的這篇文章主要介紹了
Swift 开发的工具类,主要是提供正则表达式及其它,Github会长期维护
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
直接訪問(wèn) GitHub 看代碼
YYGRegular
我是: 語(yǔ)歌復(fù)制代碼It is a regular expression used on iOS, which implement by Swift
這是一個(gè)基于swift快捷開(kāi)發(fā)的擴(kuò)展類,目前的涵蓋內(nèi)容包括詳細(xì)打印,正則表達(dá)式,會(huì)經(jīng)常維護(hù)
介于是增加更新,直接翻到后面。或者直接看 GitHub
直接把 Category 文件夾拖轉(zhuǎn)到工程里面就行
1.打印的方法,及簡(jiǎn)單介紹
| #file | String | 包含這個(gè)符號(hào)的文件路徑 |
| #line | Int | 符號(hào)出現(xiàn)的行號(hào) |
| #column | Int | 符號(hào)出現(xiàn)的類 |
| #function | String | 包含這個(gè)符號(hào)的方法名字 |
調(diào)用
直接調(diào)用打印: printLogDebug("內(nèi)容")復(fù)制代碼在 Release 版本中會(huì)自動(dòng)關(guān)閉掉向控制臺(tái)的輸出。
打印效果如下:
------------------(*行號(hào)*) lineBegin------------------------- 類名稱: ***.swift 方法名: *** 信息: ***打印的內(nèi)容*** ------------------(*行號(hào)*) line End-------------------------復(fù)制代碼關(guān)于public的使用看下表
| private | 1 | 只能在當(dāng)前作用域中使用 |
| fileprivate | 2 | 只能在當(dāng)前文件夾中使用 |
| internal | 3默認(rèn)的 | target中的其他代碼訪問(wèn) |
| public | 4 | 為其他開(kāi)發(fā)者開(kāi)發(fā)庫(kù)使用 |
| open | 5 | 為其他開(kāi)發(fā)者開(kāi)發(fā)庫(kù)使用被open標(biāo)記 的才能在其他庫(kù)中重寫 |
:
2.正則表達(dá)式用法
示例:
>
因?yàn)镾wift支持重載操作符, 這個(gè)用 =~ 來(lái)判斷是否符合,關(guān)于=~ 功能及符號(hào)的定義,自己去代碼里面找吧!!!
>
if "13146492969@sina.cn" =~ mail {printLogDebug("^_^")} else {printLogDebug("~~~~(>_<)~~~~")}/// 自定義的匹配格式判斷是否是手機(jī)號(hào)let isIphoneNum: String = "1\\d{10}"if "13146492969" =~ isIphoneNum {printLogDebug("^_^")} else {printLogDebug("~~~~(>_<)~~~~")}復(fù)制代碼定義了操作符的優(yōu)先級(jí):
precedencegroup
定義了相同操作符出現(xiàn)的結(jié)合順序
associativity
表示前后都是輸入
infix
相關(guān)正則匹配的寫法,有想知道更詳細(xì)的寫法 請(qǐng)移步: 正則表達(dá)式學(xué)習(xí)
以下給出基本的寫法。
不足之處,煩請(qǐng)指出
1./// 郵箱匹配 let mail: String = "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$"2./// 匹配用戶名 字面或者數(shù)字組合 4到16位 let Username: String = "^[a-z0-9_-]{4,16}$"3./// 匹配密碼 字面加下劃線,6到18位 let Password: String = "^[a-z0-9_-]{6,18}$"4./// 匹配16進(jìn)制 let HexValue: String = "^#?([a-f0-9]{6}|[a-f0-9]{3})$"5.///內(nèi)容帶分割符號(hào) “Anne-Blair” let Slug: String = "^[a-z0-9-]+$"6./// 匹配URL let isURL: String = "^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?$"7./// 匹配IP地址 let IPAddress: String = "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"8./// 是HTML <center>內(nèi)容<\center> 符合 let HTMLTag: String = "^<([a-z]+)([^<]+)*(?:>(.*)<\\/\\1>|\\s+\\/>)$"9./// 日期(年-月-日) let isDate1: String = "(\\d{4}|\\d{2})-((1[0-2])|(0?[1-9]))-(([12][0-9])|(3[01])|(0?[1-9]))"10./// 日期(月/日/年) let isDate2: String = "((1[0-2])|(0?[1-9]))/(([12][0-9])|(3[01])|(0?[1-9]))/(\\d{4}|\\d{2})"11./// 時(shí)間(小時(shí):分鐘, 24小時(shí)制) let TimeFormat: String = "((1|0?)[0-9]|2[0-3]):([0-5][0-9])"12./// 是漢字 let isChinese: String = "[\\u4e00-\\u9fa5]"13./// 中文及全角標(biāo)點(diǎn)符號(hào)(字符) let ChineseParagraph: String = "[\\u3000-\\u301e\\ufe10-\\ufe19\\ufe30-\\ufe44\\ufe50-\\ufe6b\\uff01-\\uffee]"14./// 中國(guó)大陸固定電話號(hào)碼 let fixedLineTelephone: String = "(\\d{4}-|\\d{3}-)?(\\d{8}|\\d{7})"15./// 中國(guó)大陸身份證號(hào)(15位或18位) let IdNum: String = "\\d{15}(\\d\\d[0-9xX])?"16./// 手機(jī)號(hào) let isIphoneNum: String = "1\\d{10}"17./// 郵政編碼 let zipCode: String = "[1-9]\\d{5}"復(fù)制代碼##新增加一些方法的擴(kuò)展。如:UIView的擴(kuò)展,富文本的擴(kuò)展,UIColor的擴(kuò)展,線程安全使用的擴(kuò)展
3.UIView的一些擴(kuò)展
主要是方便直接對(duì)視圖控件x,y等等一系列的操作
這個(gè)比較簡(jiǎn)單,不做介紹,主要是 set,get,集成后直接用就行
extension UIView {var x: CGFloat {get {return frame.origin.x}set {frame = CGRect(x: newValue, y: frame.origin.y, width: frame.width, height: frame.height)}}........................復(fù)制代碼4.線程安全操作
在Oc中為了防止多線程中對(duì)某些資源的安全訪問(wèn) 引用了
@synchronized的操作,更多的關(guān)于多線程的知識(shí) 點(diǎn)我,這里大量篇幅的描述,會(huì)使你得到更多的收獲。這里不做陳述
在Swift中已經(jīng)移除了synchronized 的使用,相應(yīng)的 我們可以直接使用:
objc_sync_enter
///資源的操作
objc_sync_exit
結(jié)合閉包的使用可以直接這樣使用
public func synchronized(_ lock: AnyObject, closure: () -> ()) {objc_sync_enter(lock)closure()objc_sync_exit(lock) }復(fù)制代碼相應(yīng)的執(zhí)行的時(shí)候你可以這樣:
var test = 0 synchronized(test as AnyObject) {test = 1 // test 在該作用域不會(huì)被其他線程改變print(test) } /// 或者這樣 synchronized(test as AnyObject, closure: {print(test) // test 在該作用域不會(huì)被其他線程改變 })復(fù)制代碼這樣你就可以愉快的使用了
5.對(duì)UIColor的擴(kuò)展
都知道Xcode在8.0以后可以直接在代碼中使用顏色編輯器,圖片預(yù)覽。這樣大大的節(jié)省了我們的開(kāi)發(fā)效率
而在于有時(shí)候的習(xí)慣的使用上來(lái)說(shuō),可能或多或少還有用代碼來(lái)操作的,這里帶給大家在使用代碼的時(shí)候的一些方便
有時(shí)候在開(kāi)發(fā)的過(guò)程中UI給的標(biāo)注是 0xCE0755 這樣的顏色標(biāo)注,那么我們有時(shí)候就需要轉(zhuǎn)換,當(dāng)然在顏色編輯器里面是可以直接使用的。
轉(zhuǎn)換如下:
public extension UIColor {/// Init color without divide 255.0////// - Parameters:/// - r: (0 ~ 255) red/// - g: (0 ~ 255) green/// - b: (0 ~ 255) blue/// - a: (0 ~ 1) alphaconvenience init(r: Int, g: Int, b: Int, a: CGFloat) {self.init(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: a)}/// Init color without divide 255.0////// - Parameters:/// - r: (0 ~ 255) red/// - g: (0 ~ 255) green/// - b: (0 ~ 1) alphaconvenience init(r: Int, g: Int, b: Int) {self.init(r: r, g: g, b: b, a: 1)}/// Init color with hex code////// - Parameter hex: hex code (eg. 0x00eeee)convenience init(hex: Int) {self.init(r: (hex & 0xff0000) >> 16, g: (hex & 0xff00) >> 8, b: (hex & 0xff), a: 1)}}復(fù)制代碼這里要說(shuō)的是主要原理就是: 先通過(guò)&運(yùn)算,取得相應(yīng)的顏色位,然后通過(guò)左移相應(yīng)的位數(shù)來(lái)進(jìn)行換算。這里就不多說(shuō)了。傳送門
6.富文本的一些操作,工程中非常清楚的介紹了使用,這里不做陳述了。
科學(xué)計(jì)數(shù)法轉(zhuǎn)換
人民幣的金額轉(zhuǎn)換
更新繼續(xù),如果您覺(jué)得對(duì)你有幫助希望你給個(gè) 星星
直接訪問(wèn) GitHub 看代碼的
總結(jié)
以上是生活随笔為你收集整理的Swift 开发的工具类,主要是提供正则表达式及其它,Github会长期维护的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 前端基础3-1——JavaScript
- 下一篇: npm和包、npm下载安装使用包、全局安