Swift 開發的工具類,主要是提供正則表達式及其它,Github會長期維護

直接訪問 GitHub 看代碼

YYGRegular

我是: 語歌復制代碼

It is a regular expression used on iOS, which implement by Swift

這是一個基于swift快捷開發的擴展類,目前的涵蓋內容包括詳細打印,正則表達式,會經常維護

介于是增加更新,直接翻到后面。或者直接看 GitHub

直接把 Category 文件夾拖轉到工程里面就行

1.打印的方法,及簡單介紹

符號類型描述
#fileString包含這個符號的文件路徑
#lineInt符號出現的行號
#columnInt符號出現的類
#functionString包含這個符號的方法名字
public func printLogDebug<T>(_ message: T,file: String = #file,method: String = #function,line: Int = #line)
{#if DEBUGprint("------------------\(line) lineBegin-------------------------\n類名稱: \((file as NSString).lastPathComponent)\n方法名: \(method)\n信息: \(message)\n------------------\(line) line  End-------------------------")#endif
}復制代碼
調用
直接調用打印:
printLogDebug("內容")復制代碼

在 Release 版本中會自動關閉掉向控制臺的輸出。

打印效果如下:

------------------(*行號*) lineBegin-------------------------
類名稱: ***.swift
方法名: ***
信息: ***打印的內容***
------------------(*行號*) line  End-------------------------復制代碼

關于public的使用看下表

名稱控制級(1-5,5最高)解釋
private1只能在當前作用域中使用
fileprivate2只能在當前文件夾中使用
internal3默認的target中的其他代碼訪問
public4為其他開發者開發庫使用
open5為其他開發者開發庫使用被open標記 的才能在其他庫中重寫

2.正則表達式用法

示例:
>

因為Swift支持重載操作符, 這個用 =~ 來判斷是否符合,關于=~ 功能及符號的定義,自己去代碼里面找吧!!!

>

        if "13146492969@sina.cn" =~ mail {printLogDebug("^_^")} else {printLogDebug("~~~~(>_<)~~~~")}/// 自定義的匹配格式判斷是否是手機號let isIphoneNum: String = "1\\d{10}"if "13146492969" =~ isIphoneNum {printLogDebug("^_^")} else {printLogDebug("~~~~(>_<)~~~~")}復制代碼

定義了操作符的優先級:

precedencegroup

定義了相同操作符出現的結合順序

associativity

表示前后都是輸入

infix

相關正則匹配的寫法,有想知道更詳細的寫法 請移步: 正則表達式學習

以下給出基本的寫法。

不足之處,煩請指出

1./// 郵箱匹配
let mail: String = "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$"2./// 匹配用戶名 字面或者數字組合 4到16位
let Username: String = "^[a-z0-9_-]{4,16}$"3./// 匹配密碼 字面加下劃線,6到18位
let Password: String = "^[a-z0-9_-]{6,18}$"4./// 匹配16進制
let HexValue: String = "^#?([a-f0-9]{6}|[a-f0-9]{3})$"5.///內容帶分割符號 “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>內容<\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./// 時間(小時:分鐘, 24小時制)
let TimeFormat: String = "((1|0?)[0-9]|2[0-3]):([0-5][0-9])"12./// 是漢字
let isChinese: String = "[\\u4e00-\\u9fa5]"13./// 中文及全角標點符號(字符)
let ChineseParagraph: String = "[\\u3000-\\u301e\\ufe10-\\ufe19\\ufe30-\\ufe44\\ufe50-\\ufe6b\\uff01-\\uffee]"14./// 中國大陸固定電話號碼
let fixedLineTelephone: String = "(\\d{4}-|\\d{3}-)?(\\d{8}|\\d{7})"15./// 中國大陸身份證號(15位或18位)
let IdNum: String = "\\d{15}(\\d\\d[0-9xX])?"16./// 手機號
let isIphoneNum: String = "1\\d{10}"17./// 郵政編碼
let zipCode: String = "[1-9]\\d{5}"復制代碼

##新增加一些方法的擴展。如:UIView的擴展,富文本的擴展,UIColor的擴展,線程安全使用的擴展

3.UIView的一些擴展

主要是方便直接對視圖控件x,y等等一系列的操作

這個比較簡單,不做介紹,主要是 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)}}........................復制代碼

4.線程安全操作

在Oc中為了防止多線程中對某些資源的安全訪問 引用了

@synchronized的操作,更多的關于多線程的知識 點我,這里大量篇幅的描述,會使你得到更多的收獲。這里不做陳述

在Swift中已經移除了synchronized 的使用,相應的 我們可以直接使用:

objc_sync_enter
///資源的操作
objc_sync_exit

結合閉包的使用可以直接這樣使用

public func synchronized(_ lock: AnyObject, closure: () -> ()) {objc_sync_enter(lock)closure()objc_sync_exit(lock)
}復制代碼

相應的執行的時候你可以這樣:

var test = 0
synchronized(test as AnyObject) {test = 1     // test 在該作用域不會被其他線程改變print(test)
}
/// 或者這樣
synchronized(test as AnyObject, closure: {print(test)  // test 在該作用域不會被其他線程改變
})復制代碼

這樣你就可以愉快的使用了

5.對UIColor的擴展

都知道Xcode在8.0以后可以直接在代碼中使用顏色編輯器,圖片預覽。這樣大大的節省了我們的開發效率

而在于有時候的習慣的使用上來說,可能或多或少還有用代碼來操作的,這里帶給大家在使用代碼的時候的一些方便

有時候在開發的過程中UI給的標注是 0xCE0755 這樣的顏色標注,那么我們有時候就需要轉換,當然在顏色編輯器里面是可以直接使用的。

轉換如下:

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)}}復制代碼

這里要說的是主要原理就是: 先通過&運算,取得相應的顏色位,然后通過左移相應的位數來進行換算。這里就不多說了。傳送門

6.富文本的一些操作,工程中非常清楚的介紹了使用,這里不做陳述了。

科學計數法轉換
人民幣的金額轉換

更新繼續,如果您覺得對你有幫助希望你給個 星星

直接訪問 GitHub 看代碼的

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260160.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260160.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260160.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用python慶祝生日_生日到底該過陰歷還是陽歷好呢?不是迷信,都怪我們大意!...

過生日到底該過陰歷還是陽歷&#xff1f;答案說出來你可能都不信在我們國家&#xff0c;過生日有兩種不同的方式&#xff0c;因為有兩種不同的日子的計算方式&#xff0c;分為陰歷和陽歷。一般來說&#xff0c;在農村和一些比較落后的地方&#xff0c;人們習慣于用陰歷來計算生…

websphere jndi oracle,websphere7.0獲得JNDI連接報invalid username/password

Exception in thread "P497968:O0:CT" java.sql.SQLException: ORA-01017: invalid username/password; logon deniedDSRA0010E: SQL 狀態&#xff1a;72000&#xff0c;錯誤碼&#xff1a;1,017at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapp…

WSS3.0自帶數據庫可以使用SQL 2005 Server Management Studio來管理

默認情況下&#xff0c;安裝完WSS3.0后&#xff0c;會自動安裝一個自帶的SQL Server 2005 Embedded Edition數據庫&#xff0c;但是此數據庫卻沒有管理工具,不像安裝SQL 2005其它版本會有管理工具。如果你要管理數據庫&#xff0c;這時怎么辦呢。經過俺試了一上午了&#xff0c…

CPU的高速緩存存儲器知識整理

基于緩存的存儲器層次結構 基于緩存的存儲器層次結構行之有效&#xff0c;是因為較慢的存儲設備比較快的存儲設備更便宜&#xff0c;還因為程序往往展示局部性&#xff1a; 時間局部性&#xff1a;被引用過一次的存儲器的位置很可能在不遠的將來被再次引用。 空間局部性&#x…

uniapp光標自動定義到文本框_word技巧自動生成畢業論文目錄

一篇word文檔&#xff0c;內容有大的章&#xff0c;小的節。如何把章節抽出來生成目錄&#xff1f;WORD →點擊需要插入的地方 → 插入菜單 → 索引和目錄 → 目錄 → 確定。1 創建標題目錄Word 一般是利用標題或者大綱級別來創建目錄的。因此&#xff0c;在創建目錄之前&#…

JSTL

2019獨角獸企業重金招聘Python工程師標準>>> 說明 JSTL 是 JAVA 中的一個定制標記庫集。實現了JSP頁面中代碼的復用&#xff0c;增加了JSP頁面的可讀性&#xff0c;方便查看和參與開發 使用 1.下載地址 http://archive.apache.org/dist/jakarta/taglibs/standard/bi…

[jQuery] event.stopPropagation()報錯

使用jQuery給一個事件加處理方法時&#xff0c;為了阻止一個事件向上冒泡&#xff0c;使用了event.stopPropagation()&#xff0c;但在IE下卻報對象不支持此屬性或方法的錯誤&#xff08;IE下是event. cancelBubbletrue&#xff09;&#xff0c;jQuery不是兼容各瀏覽器嗎&#…

中科燕園arcgis外包----排水管網地理信息系統

項目背景 紹興縣是浙江省第一個“數字城管”試點城市&#xff0c;也是全國第一個“數字城管”縣級城市。隨著經濟的飛速發展、城市化步伐的加快&#xff0c;以及城市規模的擴大和現代化程度的不斷提高&#xff0c;作為城市重要基礎設施的城市地下管線也越來越龐大、密集&#x…

自然語言0_nltk中文使用和學習資料匯總

sklearn實戰-乳腺癌細胞數據挖掘&#xff08;博主親自錄制視頻教程&#xff09; https://study.163.com/course/introduction.htm?courseId1005269003&utm_campaigncommission&utm_sourcecp-400000000398149&utm_mediumshare http://blog.csdn.net/huyoo/article/…

python實現深度優先搜索_python中的深度優先搜索算法

假設我有一個函數&#xff0c;它接受一個輸入($x iui$)&#xff0c;然后經過一個循環并生成一系列輸出($x{I&#xff0c;j}$)。然后&#xff0c;每個輸出可以再次作為同一函數的輸入&#xff0c;從而產生更多的輸出($x{i&#xff0c;j&#xff0c;k}$)。我試圖通過這個函數找到…

mysql函數移植到oracle,oracle到mysql的遷移,函數部分

to_date(?, YYYY-MM-DD HH24:MI:SS)"STR_TO_DATE(2003-15-10 00:00:00,%Y-%m-%d %H:%i:%s); //格式不對&#xff0c;會返回NULLto_char(create_time,yyyy-MM-dd)DATE_FORMAT(create_time,%Y-%m-%d)sysdatenow()或者CURRENT_TIMESTAMP //1997-12-15 23:50:26,建表的時…

學習關于時間在sql里面的對比,用if語句(這個有點特別)

需求&#xff1a;假如當前時間是大于starttime且小于endtime的則按starttime倒序排列顯示一條記錄&#xff1b;假如當前時間小于starttime且小于endtime則按starttime正序排列顯示一條記錄。要在一次sql查詢中完成。 這個是論壇里面的&#xff0c;人家給出答案了&#xff0c;我…

ruby中的回調方法和鉤子方法

在ruby中&#xff0c;當某些特定的事件發生時&#xff0c;將調用回調方法和鉤子方法。事件有如下幾種&#xff1a; 調用一個不存在的對象方法類混含一個模塊定義類的子類給類添加一個實例方法給對象添加一個單例方法引用一個不存在的常量對以上的事件&#xff0c;都可以為之編寫…

超簡單的JNI——NDK開發教程

不好意思各位&#xff0c;我按照網上一些教程進行JNI開發&#xff0c;折騰了半天也沒成功&#xff0c;最后自己瞎搞搞定了&#xff0c;其實超簡單的&#xff0c;網上的教程應該過時了&#xff0c;最新版的AS就包含了NDK編譯的功能&#xff0c;完全不用手動javah&#xff0c;各種…

查詢工資最低的3名員工的職工工號、姓名和收入_關于工資條,這6個常識必須掌握,事關你的權益!...

大狀說&#xff1a;找大狀&#xff0c;中小企業自己的法律顧問。今天為大家帶來的文章&#xff0c;是《關于工資條&#xff0c;這6個常識必須掌握&#xff0c;事關你的權益&#xff01;》&#xff0c;是關于勞動法的內容&#xff0c;希望能給大家帶來幫助。1、單位不發工資條的…

oracle查對象創建時間,oracle:查詢某個時間之后,指定用戶,指定對象類型,并創建的表的個數...

SQL> select COUNT(*) from dba_objects where created< to_date(17-01-14,dd-mm-yy) AND owner用戶名 and object_typeTABLE;查詢某個時間之后創建的表有哪些&#xff1a;SQL> select object_name,created from dba_objects where created> to_date(17-01-14,dd-…

年末跳槽

末日過了&#xff0c;大家都在準備著年會&#xff0c;年總結&#xff0c;年終獎。 而我卻在煩著跳槽的事。 由于一個偶遇的機會&#xff0c;最近面試了公司B&#xff0c;面試過程還可以&#xff0c;跟公司B的技術管理人談得還挺開心的。他也同意我的技術。 開始的時候&#xff…

SQL之用戶自定義函數

關于SQL Server用戶自定義的函數&#xff0c;有標量函數、表值函數&#xff08;內聯表值函數、多語句表值函數&#xff09;兩種。 題外話&#xff0c;可能有部分朋友不知道SQL Serve用戶自定義的函數應該是寫在哪里&#xff0c;這里簡單提示一下&#xff0c;在Microsoft SQL Se…

hdoj3351-stack

Problem DescriptionI’m out of stories. For years I’ve been writing stories, some rather silly, just to make simple problems look difficult and complex problems look easy. But, alas, not for this one.You’re given a non empty string made in its entirety f…

vb語言程序設計_如果編程語言難度決定頭發濃度,學這語言的可能要光頭了

對于程序員來說&#xff0c;頭發真的比什么都重要&#xff0c;甚至很多程序員&#xff0c;大量的人民幣都花在了后續植發上。甚至網上還流行這么一句話&#xff0c;你發際線越高&#xff0c;編程能力越高&#xff0c;那對于程序員來說&#xff0c;那么多語言&#xff0c;到底哪…