这篇文章主要介绍了用golang怎么替换某个文件中的字符串,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Golang的优点golang是一种编译语言,可以将代码编译为机器代码
这篇文章主要介绍了用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 := 1for {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 mainimport ( "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 mainimport ( "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怎么替换某个文件中的字符串”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网GO频道,更多相关知识等着你来学习!
--结束END--
本文标题: 用golang怎么替换某个文件中的字符串
本文链接: https://www.lsjlt.com/news/274745.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0