首页 > 后端开发 > Golang > 如何在go中的特定字符串之前附加到文件?

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

王林
发布: 2024-02-05 21:15:08
转载
504 人浏览过

如何在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)
    }
}
登录后复制

以上是如何在go中的特定字符串之前附加到文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:stackoverflow.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板