Maison > développement back-end > Golang > Comment ajouter à un fichier avant une chaîne spécifique en cours de route ?

Comment ajouter à un fichier avant une chaîne spécifique en cours de route ?

王林
Libérer: 2024-02-05 21:15:08
avant
504 Les gens l'ont consulté

Comment ajouter à un fichier avant une chaîne spécifique en cours de route ?

Contenu de la question

J'ai un fichier qui commence par cette structure :

locals {
  my_list = [
    "a",
    "b",
    "c",
    "d"
    //add more text before this
  ]
}
Copier après la connexion

Je souhaite ajouter le texte "e" avant "//Ajouter plus de texte avant ceci" et "," après "d", donc cela ressemblera à ceci :

locals {
  MY_LIST = [
    "a",
    "b",
    "c",
    "d",
    "e"
    //add more text before this
  ]
}
Copier après la connexion

Comment puis-je implémenter cela de manière dynamique afin de pouvoir ajouter plus de chaînes au fichier à l'avenir ?

Merci


Bonne réponse


Pour ajouter le texte "e" avant la ligne commençant par "//", vous pouvez procéder comme suit.

  1. Ouvrez les fichiers en mode lecture/écriture.
  2. Créez un scanner à partir d'un fichier et numérisez chaque ligne en mémoire.
  3. Vérifiez chaque ligne lors de la numérisation pour voir si elle rencontre une ligne contenant "//".
  4. Enregistrez chaque ligne dans un tableau afin de pouvoir la réécrire dans le fichier plus tard.
  5. Si la ligne est trouvée, ajoutez une nouvelle ligne « e » et mettez à jour la ligne précédente.
  6. Réécrivez ces lignes dans le fichier.
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)
    }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal