您好,登錄后才能下訂單哦!
這篇文章主要介紹了用golang怎么替換某個文件中的字符串,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
golang是一種編譯語言,可以將代碼編譯為機器代碼,編譯后的二進制文件可以直接部署到目標機器而無需額外的依賴,所以golang的性能優(yōu)于其他的解釋性語言,且可以在golang中使用goroutine來實現(xiàn)并發(fā)性,它提供了一個非常優(yōu)雅的goroutine調(diào)度程序系統(tǒng),可以很容易地生成數(shù)百萬個goroutine。
用golang實現(xiàn)了某個文件中字符的替換,替換為按行替換,執(zhí)行后會生成新文件,如a.txt,執(zhí)行后生成a.txt.mdf。新文件即修改后的內(nèi)容。
package main import ( "bufio" "fmt" "io" "os" "strings" ) func main() { if len(os.Args) != 4 { fmt.Println("lack of config file, eg: go run main.go ${path_of_file} ${old_string} ${new_string}") os.Exit(-1) } fileName := os.Args[1] in, err := os.Open(fileName) if err != nil { fmt.Println("open file fail:", err) os.Exit(-1) } defer in.Close() out, err := os.OpenFile(fileName+".mdf", os.O_RDWR|os.O_CREATE, 0766) if err != nil { fmt.Println("Open write file fail:", err) os.Exit(-1) } defer out.Close() br := bufio.NewReader(in) index := 1 for { line, _, err := br.ReadLine() if err == io.EOF { break } if err != nil { fmt.Println("read err:", err) os.Exit(-1) } newLine := strings.Replace(string(line), os.Args[2], os.Args[3], -1) _, err = out.WriteString(newLine + "\n") if err != nil { fmt.Println("write to file fail:", err) os.Exit(-1) } fmt.Println("done ", index) index++ } fmt.Println("FINISH!") }
源文件:
將空格替換為逗號:
新文件:
補充:golang關(guān)于字符串替換的建議
package main import ( "fmt" "regexp" ) func main() { tmp := "/Users/max/Downloads/test/website\\nbackup\n" buf := []byte(tmp) a := "/Users/max/Downloads/test/website\\nbackup" r := regexp.MustCompile(a + "\n") taskText := r.ReplaceAllString(string(buf[:]), "") fmt.Println(r.String() == string(buf[:])) fmt.Printf("%q\n", r.String()) fmt.Printf("%q\n", string(buf[:])) fmt.Printf("%q\n", taskText) }
結(jié)果輸出:
true
"/Users/max/Downloads/test/website\\nbackup\n"
"/Users/max/Downloads/test/website\\nbackup\n"
"/Users/max/Downloads/test/website\\nbackup\n"
然后,我們更改一句代碼
package main import ( "fmt" "regexp" "strings" ) func main() { tmp := "/Users/max/Downloads/test/website\\nbackup\n" buf := []byte(tmp) a := "/Users/max/Downloads/test/website\\nbackup" r := regexp.MustCompile(a + "\n") // taskText := r.ReplaceAllString(string(buf[:]), "") taskText := strings.ReplaceAll(string(buf[:]), r.String(), "") fmt.Println(r.String() == string(buf[:])) fmt.Printf("%q\n", r.String()) fmt.Printf("%q\n", string(buf[:])) fmt.Printf("%q\n", taskText) }
結(jié)果輸出:
true
"/Users/max/Downloads/test/website\\nbackup\n"
"/Users/max/Downloads/test/website\\nbackup\n"
""
感謝你能夠認真閱讀完這篇文章,希望小編分享的“用golang怎么替換某個文件中的字符串”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。