2012-12-10 36 views
2

我在Go中進行編程,然後我讀取了一個文本文件,並將其替換爲多個內容,以便將代碼從一種語言轉換爲Go以便能夠運行。我遇到的問題是,當試圖替換Println語句之類的東西時,我無法在語句結尾處獲得括號,而沒有真正特定於我要轉換的代碼。有沒有辦法使用這樣的代碼?當使用bytes.replace有沒有辦法使用通配符?

src = bytes.Replace(src, []byte("Insert"), []byte("Println(" * ")"), -1) 

並且能夠在代碼行末尾放一個圓括號?

回答

2
package main 

import (
     "fmt" 
     "regexp" 
) 

func main() { 
     src := []byte(` 
Write(1, 3, "foo", 3*qux(42)); 
WriteLn("Enter bar: "); 
`) 
     re := regexp.MustCompile(`Write\((.*)\);`) 
     re2 := regexp.MustCompile(`WriteLn\((.*)\);`) 
     src = re.ReplaceAll(src, []byte(`Print($1)`)) 
     src = re2.ReplaceAll(src, []byte(`PrintLn($1)`)) 
     fmt.Printf("%s", src) 
} 

(假here


輸出:

Print(1, 3, "foo", 3*qux(42)) 
PrintLn("Enter bar: ") 
+0

現將我可以把它設置爲變量SRC來更新它,因爲我修改的代碼? – user1889820

+0

我調整了答案以顯示如何更新'src'。 – zzzz

+0

非常感謝您的幫助! – user1889820

相關問題