Xcode利用正則整體替換

前言

事情是這樣的,由于ios每個(gè)版本系統(tǒng)字體大小都會(huì)有細(xì)微差別,所以在我來公司之前前同事找了一種字體名是"STHeitiSC-Light"字體來代替以保證字體大小相同,但是現(xiàn)在UI覺得還是系統(tǒng)字體好要改回來,但是當(dāng)時(shí)沒有作宏定義...

選擇

最開始想到的當(dāng)然是一個(gè)個(gè)改了,但是我一搜



實(shí)在太多了,pass...

由于要替換的是這樣的
[UIFont fontWithName:STHeitiSC_Light size:12]
要替換成這樣
[UIFont systemFontOfSize:(12) weight:UIFontWeightRegular]
所以只能用正則的方式
然后想到了Xcode自帶的查找和替換功能

選擇Replace里的Regular Expression

動(dòng)手

1.oc中看了下有這兩種

[UIFont fontWithName:STHeitiSC_Light size:12.0]   //直接用數(shù)字
[UIFont fontWithName:STHeitiSC_Light size:Font_Title] //用宏定義

正則\[UIFont fontWithName:STHeitiSC_Light size:(.*?)\]
問號(hào)在正則中表示非貪婪模式,指匹配到第一個(gè)就停止
防止[optionDic setObject:[UIFont fontWithName:STHeitiSC_Light size:Font_Option] forKey:NSFontAttributeName];這樣的語句匹配錯(cuò)誤。

替換代碼
[UIFont systemFontOfSize:($1) weight:UIFontWeightRegular]

2.swift中也有兩種寫法

UIFont(name: STHeitiSC_Light, size: 16)
UIFont.init(name: STHeitiSC_Light, size: 16)

因?yàn)闆]有宏定義的情況,正則可以是這樣
UIFont\(name: STHeitiSC_Light, size: ([0-9.]*)\)UIFont.init\(name: STHeitiSC_Light, size: ([0-9.]*)\)

替換代碼
UIFont.systemFont(ofSize: $1)

這里有個(gè)問題,因?yàn)橹坝米煮w名,所以可能會(huì)出現(xiàn)這樣的情況

修改完之后多了一個(gè)!

因?yàn)橐脖容^多就用這個(gè)正則再替換下UIFont.systemFont\(ofSize: ([0-9.]*)\)!

這樣就完事兒啦!

總結(jié)

這里只是把我們工程中修改的過程寫下來,具體怎么替換需要根據(jù)各自工程里的寫法修改,我覺得這個(gè)功能還是很強(qiáng)大的,利用得好可以省很多事兒!

覺得有用就點(diǎn)個(gè)贊吧:)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容