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 ?

王林
王林avant
2024-02-05 21:15:08482parcourir

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

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

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

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer