英文:
Adding a string to an existing text file in Go
问题
我有一个文本文件,我想使用Go语言向其中添加一段文本。文本文件的内容如下(不包括编号):
- blah
- blah2
- ]
- blah3
- blah4
我希望它的内容变成这样:
- blah
- blah2
- 我要插入的文本在这里
- ]
- blah3
- blah4
假设我已经打开了文件,并创建了一个名为"lines"的字符串数组,其中每个元素代表文件中的一行。
//找到包含"]"的行
for i, line := range lines {
if strings.ContainsRune(line, ']') {
//获取"]"之前的行...然后进行写入操作
lines[i-1] (?)
}
}
我该如何实现这个功能?
英文:
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)
- blah
- blah2
- ]
- blah3
- blah4
and i want it to look like this
- blah
- blah2
- MY INSERTED TEXT HERE
- ]
- blah3
- blah4
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?
答案1
得分: 0
以下是翻译好的内容:
lines = append(lines[:i],
append([]string{"我插入的文本在这里"}, lines[i:]...)...)
或者
lines = append(lines, "")
copy(lines[i+1:], lines[i:])
lines[i] = "我插入的文本在这里"
第二种方法更高效。这两种方法在有用的SliceTricks页面上列出。
英文:
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.
答案2
得分: 0
如果你想使用切片来实现这个操作,你可以在正确的索引位置插入你想要的字符串。
// 扩展切片的长度
lines = append(lines, "")
// 将每个元素向后移动
copy(lines[i+1:], lines[i:])
// 现在你可以在索引 i 处插入新的行
lines[i] = x
英文:
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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论