将字符串添加到Go中的现有文本文件

时间:2014-10-01 16:29:03

标签: go

我有一个文本文件,我想添加一个文本块来使用Go。文本文件看起来像这样(没有编号)

  1. blah
  2. blah2
  3. ]
  4. blah3
  5. blah4
  6. 我希望它看起来像这样

    1. blah
    2. blah2
    3. 我插入的文字
    4. blah3
    5. blah4
    6. 假设我已经打开了文件,并在名为'lines'的文件中创建了每行的字符串数组。

       //find line with ] 
       for i, line := range lines {
           if(strings.ContainsRune(line, ']')) {
               //take the line before ']'... and write to it somehow 
               lines[i-1] (?)
      
           }
       }
      

      我该怎么做?

2 个答案:

答案 0 :(得分:0)

lines = append(lines[:i], 
           append([]string{"MY INSERTED TEXT HERE"}, lines[i:]...)...)

lines = append(lines, "")
copy(lines[i+1:], lines[i:])
lines[i] = "MY INSERTED TEXT HERE"

第二种方法更有效。这两种方法列在有用的SliceTricks页面上。

答案 1 :(得分:0)

如果要对切片执行此操作,可以在正确的索引处插入所需的字符串。

// make the slice longer
lines = append(lines, "")
// shift each element back
copy(lines[i+1:], lines[i:])
// now you can insert the new line at i
lines[i] = x