[英]Regular Expression to replace CGRectMake
由於CGRectMake在swift 3.0中不可用,並且migrator沒有進行轉換,因此我需要手動替換它,並且在我的代碼中使用了300次以上,因此任何人都可以在此方面幫助我開發正則表達式,以便我找到並替換代碼。 我想做的就是轉換
CGRectMake(a,a,a,a)在這里a是一些值。
至
CGRect(x:a,y:a,w:a,h:a)
通過此查找:
CGRectMake\(([^,]*),([^,]*),([^,]*),([^,]*)\)
並替換為:
CGRect\(x:\1, y:\2, w:\3, h:\4\)
在記事本中嘗試過++
編輯-使用正則表達式:
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"
其中appdelegateobject
是appdelegate
共享實例對象,您將在其中定義具有string
parameter
CGRectMakeWrapper
函數,如下所示:
func CGRectMakeWrapper(str: String) -> CGRect {
var rect = CGRectZero
if(str.characters.count > 0)
{
var arr = str.componentsSeparatedByString(",")
if(arr.count == 4)
{
rect = CGRect(x: CGFloat((arr[0] as NSString).doubleValue), y: CGFloat((arr[1] as NSString).doubleValue), width: CGFloat((arr[2] as NSString).doubleValue), height: CGFloat((arr[3] as NSString).doubleValue))
}
}
return rect
}
var rect = "10.0,10.0,100,100" //String
var rect1 = CGRectMakeWrapper(rect) //CGRect
我已將示例字符串顯示為rect並傳遞給CGRectMakeWrapper函數,該函數將返回一個rect。 您可以在通用類中定義此CGRectMakeWrapper函數,所有類(例如Appdelegate文件)都可以訪問它。
我有一種不同的方法來解決這個問題。
第1步
在下一行
CGRectMake(a,a,a,a)
只需將CGRectMake
替換為CGRectMakeCustom
,一切將看起來像
CGRectMakeCustom(a,a,a,a)
第2步
在項目中創建新的Global函數,如下所示
func CGRectMakeCustom(x: Double, y: Double, width: Double, height: Double) -> CGRect
{
return CGRect(x: x, y: y, width: width, height: height)
}
這樣,您就可以輕松開始在Swift3上進行喚醒
您可以在搜索和搜索時將模式更改為正則表達式:
CGRectMake\\(([^,]*),([^,]*),([^,]*),([^,]*)\\)
應該替換為
CGRect\\(x:\\1, y:\\2, w:\\3, h:\\4\\)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.