婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 用golang如何替換某個文件中的字符串

用golang如何替換某個文件中的字符串

熱門標簽:阿克蘇地圖標注 涿州代理外呼系統 評價高的400電話辦理 外呼系統顯本地手機號 電話機器人軟件免費 百度地圖標注后傳給手機 外呼系統用什么卡 壽光微信地圖標注 excel地圖標注分布數據

用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"

""

可以發現,字符串可以被替換

所以,建議在使用字符串替換時,避免使用正則表達式的ReplaceAllString方法,而應該選擇更為穩妥的strings包中的ReplaceAll方法。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 基于golang中container/list包的用法說明
  • Golang中List的實現方法示例詳解
  • golang使用grpc+go-kit模擬oauth認證的操作
  • golang中for range的取地址操作陷阱介紹
  • golang如何去除多余空白字符(含制表符)
  • golang正則之命名分組方式
  • 解決golang中container/list包中的坑

標簽:吐魯番 蘭州 梅河口 欽州 汕頭 銅川 重慶 雞西

巨人網絡通訊聲明:本文標題《用golang如何替換某個文件中的字符串》,本文關鍵詞  用,golang,如何,替換,某個,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《用golang如何替換某個文件中的字符串》相關的同類信息!
  • 本頁收集關于用golang如何替換某個文件中的字符串的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 即墨市| 治县。| 天门市| 措美县| 靖安县| 淄博市| 博罗县| 西畴县| 阜阳市| 邳州市| 甘孜县| 中牟县| 宣武区| 合川市| 浙江省| 吉首市| 来安县| 武陟县| 米易县| 荥经县| 泰安市| 广德县| 金门县| 呼和浩特市| 枣阳市| 龙海市| 仁寿县| 舞阳县| 伊宁县| 普格县| 博客| 木里| 沂水县| 同心县| 永丰县| 凌海市| 都江堰市| 吴川市| 岳池县| 开远市| 东明县|