欢迎光临
我们一直在努力

如何在go中的特定字符串之前附加到文件?

如何在go中的特定字符串之前附加到文件?

问题内容

我有一个以此结构开头的文件:

locals {
  my_list = [
    "a",
    "b",
    "c",
    "d"
    //add more text before this
  ]
}

我想在“//在此之前添加更多文本”之前添加文本“e”,在“d”之后添加“,”,所以它会像这样:

locals {
  MY_LIST = [
    "a",
    "b",
    "c",
    "d",
    "e"
    //add more text before this
  ]
}

如何动态实现此功能,以便将来可以向文件添加更多字符串?

谢谢

正确答案

要在以“//”开头的行之前添加文本“e”,您可以执行以下操作。

  1. 以读/写模式打开文件。
  2. 根据文件创建扫描器,并将每一行扫描到内存中。
  3. 扫描时检查每一行,看看是否遇到包含“//”的行。
  4. 将每一行保存在数组中,以便稍后将其写回文件。
  5. 如果找到该行,请附加新行“e”,并更新上一行。
  6. 将这些行写回文件。
func main() {
    f, err := os.OpenFile("locals.txt", os.O_RDWR, 0644)
    if err != nil {
        log.Fatal(err)
    }

    scanner := bufio.NewScanner(f)
    lines := []string{}
    for scanner.Scan() {
        ln := scanner.Text()
        if strings.Contains(ln, "//") {
            index := len(lines) - 1
            updated := fmt.Sprintf("%s,", lines[index])
            lines[index] = updated
            lines = append(lines, "    "e"", ln)
            continue
        }
        lines = append(lines, ln)
    }

    content := strings.Join(lines, "n")
    _, err = f.WriteAt([]byte(content), 0)
    if err != nil {
        log.Fatal(err)
    }
}
赞(0) 打赏
未经允许不得转载:码农资源网 » 如何在go中的特定字符串之前附加到文件?
分享到

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册