首頁 > 後端開發 > Golang > 如何在go中的特定字串之前附加到檔案?

如何在go中的特定字串之前附加到檔案?

王林
發布: 2024-02-05 21:15:08
轉載
501 人瀏覽過

如何在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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板