2014-10-02 30 views
4

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

假设我已经打开了文件,并在字符串对象现在我循环数组每一行通过

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

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


      //replace line with "LOL" 
      ? 
     } 
    } 

回答

9

这里的问题是没有这么多,你在循环做什么。这不像你会直接编辑文件。

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

下面是我在一两分钟内整理的一些代码。它正确编译并在我的机器上运行。

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