替换文本文件Golang中的一行

时间:2014-10-02 00:48:48

标签: go

如何用新行替换文本文件中的行?

假设我已打开文件,并且我现在正在循环遍历字符串对象数组中的每一行

//find line with ']'
    for i, line := range lines {

        if strings.Contains(line, ']') {


            //replace line with "LOL"
            ?
        }
    }

1 个答案:

答案 0 :(得分:21)

这里重要的不是你在那个循环中做了什么。它不像你那样会直接编辑文件。

最简单的解决方案是,只需替换数组中的字符串,然后在完成后将数组的内容写回文件。

这是我在一两分钟内汇总的一些代码。它可以在我的机器上正确编译和运行。

package main

import (
        "io/ioutil"
        "log"
        "strings"
)

func main() {
        input, err := ioutil.ReadFile("myfile")
        if err != nil {
                log.Fatalln(err)
        }

        lines := strings.Split(string(input), "\n")

        for i, line := range lines {
                if strings.Contains(line, "]") {
                        lines[i] = "LOL"
                }
        }
        output := strings.Join(lines, "\n")
        err = ioutil.WriteFile("myfile", []byte(output), 0644)
        if err != nil {
                log.Fatalln(err)
        }
}

还有一个要点(使用相同的代码) https://gist.github.com/dallarosa/b58b0e3425761e0a7cf6