I have a text file that i'd like to add an a block of text to using Go. The text file looks like this (without the numbering)
and i want it to look like this
Assume I've already opened the file and created a string array of each line in the file called '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] (?)
}
}
How do I do this?
lines = append(lines[:i],
append([]string{"MY INSERTED TEXT HERE"}, lines[i:]...)...)
or
lines = append(lines, "")
copy(lines[i+1:], lines[i:])
lines[i] = "MY INSERTED TEXT HERE"
The second approach is more efficient. The two approaches are listed on the useful SliceTricks page.
If you want to do this with a slice, you can insert the string you want at the correct index.
// 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