美文网首页
Xcode利用正则整体替换

Xcode利用正则整体替换

作者: 心亦逸风 | 来源:发表于2017-11-30 11:25 被阅读16次

    前言

    事情是这样的,由于ios每个版本系统字体大小都会有细微差别,所以在我来公司之前前同事找了一种字体名是"STHeitiSC-Light"字体来代替以保证字体大小相同,但是现在UI觉得还是系统字体好要改回来,但是当时没有作宏定义...

    选择

    最开始想到的当然是一个个改了,但是我一搜



    实在太多了,pass...

    由于要替换的是这样的
    [UIFont fontWithName:STHeitiSC_Light size:12]
    要替换成这样
    [UIFont systemFontOfSize:(12) weight:UIFontWeightRegular]
    所以只能用正则的方式
    然后想到了Xcode自带的查找和替换功能

    选择Replace里的Regular Expression

    动手

    1.oc中看了下有这两种

    [UIFont fontWithName:STHeitiSC_Light size:12.0]   //直接用数字
    [UIFont fontWithName:STHeitiSC_Light size:Font_Title] //用宏定义
    

    正则\[UIFont fontWithName:STHeitiSC_Light size:(.*?)\]
    问号在正则中表示非贪婪模式,指匹配到第一个就停止
    防止[optionDic setObject:[UIFont fontWithName:STHeitiSC_Light size:Font_Option] forKey:NSFontAttributeName];这样的语句匹配错误。

    替换代码
    [UIFont systemFontOfSize:($1) weight:UIFontWeightRegular]

    2.swift中也有两种写法

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

    因为没有宏定义的情况,正则可以是这样
    UIFont\(name: STHeitiSC_Light, size: ([0-9.]*)\)UIFont.init\(name: STHeitiSC_Light, size: ([0-9.]*)\)

    替换代码
    UIFont.systemFont(ofSize: $1)

    这里有个问题,因为之前用字体名,所以可能会出现这样的情况

    修改完之后多了一个!
    因为也比较多就用这个正则再替换下UIFont.systemFont\(ofSize: ([0-9.]*)\)!

    这样就完事儿啦!

    总结

    这里只是把我们工程中修改的过程写下来,具体怎么替换需要根据各自工程里的写法修改,我觉得这个功能还是很强大的,利用得好可以省很多事儿!

    觉得有用就点个赞吧:)

    相关文章

      网友评论

          本文标题:Xcode利用正则整体替换

          本文链接:https://www.haomeiwen.com/subject/lhnmbxtx.html