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
526 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!

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