如何在go中在特定字符串前追加文件?

bjg7j2ky  于 2022-12-25  发布在  Go
关注(0)|答案(1)|浏览(256)

我有一个文件,它以这样的结构开始:

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

我想在文本“e”前加上“//add more text before this”和““,在“d”后加上”d”这样他就会是这样的:

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

我怎样才能动态地实现它,以便将来可以向文件中添加更多的字符串?
谢啦,谢啦

t1qtbnec

t1qtbnec1#

要在以“//”开头的行之前添加文本“e”,可以执行以下操作。
1.以读/写模式打开文件。
1.从该文件创建一个扫描程序,并将每一行扫描到内存中。
1.扫描时检查每一行,看看是否遇到包含“//"的行。
1.将每一行保存在数组中,以便以后可以将它们写回文件。
1.如果您找到了该行,则添加新行“e”,并更新前一行。
1.将这些行写回文件。

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)
    }
}

相关问题