使用bytes.replace有没有办法使用通配符?

时间:2012-12-10 05:45:43

标签: printing replace byte go wildcard

我在Go中编程并且我在其中读取了一个文本文件,并且我在其上替换了多个内容以将代码从一种语言转换为Go以便能够运行。我遇到的问题是,当尝试替换像Println语句之类的东西时,我不能在语句的末尾得到一个括号,而不是真正特定于我正在转换的代码。有没有办法像这样使用代码?

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

并且能够在代码行的末尾加上一个括号吗?

1 个答案:

答案 0 :(得分: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)
}

(Alse here


输出:

Print(1, 3, "foo", 3*qux(42))
PrintLn("Enter bar: ")
相关问题