2014-10-02 50 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