我正在使用 Go 进行编程,我读取了一个文本文件,并在其中替换了多个内容,以将代码从一种语言翻译成 Go 以便能够运行。我遇到的问题是,当尝试替换诸如 Println 语句之类的内容时,如果没有真正具体到我正在转换的代码,我就无法在语句末尾加上括号。有没有办法使用这样的代码?
src = bytes.Replace(src, []byte("Insert"), []byte("Println(" * ")"), -1)
并且有能力在代码行的末尾加上一个括号吗?
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)
}
(也在这里)
输出:
Print(1, 3, "foo", 3*qux(42))
PrintLn("Enter bar: ")