您好,登錄后才能下訂單哦!
這篇文章主要介紹了用golang怎么替換某個文件中的字符串,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
golang是一種編譯語言,可以將代碼編譯為機器代碼,編譯后的二進制文件可以直接部署到目標機器而無需額外的依賴,所以golang的性能優于其他的解釋性語言,且可以在golang中使用goroutine來實現并發性,它提供了一個非常優雅的goroutine調度程序系統,可以很容易地生成數百萬個goroutine。
用golang實現了某個文件中字符的替換,替換為按行替換,執行后會生成新文件,如a.txt,執行后生成a.txt.mdf。新文件即修改后的內容。
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關于字符串替換的建議
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) }
結果輸出:
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) }
結果輸出:
true
"/Users/max/Downloads/test/website\\nbackup\n"
"/Users/max/Downloads/test/website\\nbackup\n"
""
感謝你能夠認真閱讀完這篇文章,希望小編分享的“用golang怎么替換某個文件中的字符串”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。