正则表达式替换CGRectMake

时间:2016-09-28 06:08:06

标签: ios regex swift swift3 xcode8

由于CGRectMake在swift 3.0中不可用而且迁移器没有转换它我需要手动替换它并且在我的代码中使用它超过300次所以任何人都可以帮助我开发正则表达式以便我能找到并且替换代码。我想做的是转换

CGRectMake(a,a,a,a)这里是一个值。

CGRect(x:a,y:a,w:a,h:a)

4 个答案:

答案 0 :(得分:3)

通过此查找:

CGRectMake\(([^,]*),([^,]*),([^,]*),([^,]*)\)

并替换为:

CGRect\(x:\1, y:\2, w:\3, h:\4\)

在notepad ++中尝试过它

答案 1 :(得分:1)

  

编辑 - 使用正则表达式:

CGRectMake\(([^,]*),([^,]*),([^,]*),([a-z|0-9|.|A-Z]*)\)

并替换为

CGRect\(x:\1, y:\2, width:\3, height:\4\)

使用正则表达式,我们无法动态获取x,y,width,height的值。

上面的替代解决方案是,

  • 将所有CGRectMake(替换为 appdelegateobject.CGRectMakeWrapper("
  • 最后只添加"

在您的情况下,您将CGRectMake(a,a,a,a)替换为appdelegateobject.CGRectMakeWrapper("a,a,a,a"

其中appdelegateobjectappdelegate共享实例对象,您将定义具有CGRectMakeWrapper string的{​​{1}}函数,如下所示:

parameter

我已将示例字符串显示为rect并传递给CGRectMakeWrapper函数,该函数将返回rect。您可以在所有类都可以访问的公共类中定义此CGRectMakeWrapper函数(例如Appdelegate文件)。

答案 2 :(得分:0)

我有一种不同的方法来解决这个问题。

  

第1步

在以下一行

CGRectMake(a,a,a,a) 

只需将CGRectMake替换为CGRectMakeCustom,这样所有内容都会显示为

CGRectMakeCustom(a,a,a,a)
  

第2步

在项目中创建新的全局功能  如下

func CGRectMakeCustom(x: Double, y: Double, width: Double, height: Double) -> CGRect
    {
        return CGRect(x: x, y: y, width: width, height: height)
    }

通过这种方式,您可以轻松地开始使用Swift3

答案 3 :(得分:-1)

您可以在搜索和搜索时将模式更改为正则表达式:

CGRectMake\(([^,]*),([^,]*),([^,]*),([^,]*)\)

应替换为

CGRect\(x:\1, y:\2, w:\3, h:\4\)