web-dev-qa-db-fra.com

Comment supprimer \ n des lignes

file, _ := os.Open("x.txt")
    f := bufio.NewReader(file)

    for {
        read_line, _ := ReadString('\n')
        fmt.Print(read_line)


        // other code what work with parsed line...
        }

fin, il ajoute\n sur chaque ligne, fin du programme pour fonctionner, ne fonctionne qu'avec la dernière ligne ...

Veuillez mettre un exemple, j'essaie n'importe quoi et toute solution ce que je trouve ici ne fonctionne pas pour moi.

13
tseries

Vous pouvez couper le dernier caractère:

read_line = read_line[:len(read_line)-1]

Une meilleure approche consiste peut-être à utiliser la bibliothèque de chaînes:

read_line = strings.TrimSuffix(read_line, "\n")
32
Alex Lew

Si vous souhaitez lire un fichier ligne par ligne, utilisez bufio.Scanner sera plus facile. Le scanner ne comprend pas endline (\n ou \r\n) dans la ligne.

file, err := os.Open("yourfile.txt")
if err != nil {
    //handle error
    return
}
defer file.Close()

s := bufio.NewScanner(file)
for s.Scan() {
    read_line := s.Text()

    // other code what work with parsed line...
}

Si vous souhaitez supprimer endline, je vous suggère d'utiliser TrimRightFunc , c'est-à-dire.

read_line = strings.TrimRightFunc(read_line, func(c rune) bool {
    //In windows newline is \r\n
    return c == '\r' || c == '\n'
})

Mise à jour:
Comme l'a souligné @GwynethLlewelyn, l'utilisation de TrimRight sera plus simple (plus propre), c'est-à-dire.

 read_line = strings.TrimRight(read_line, "\r\n")

En interne, la fonction TrimRight appelle TrimRightFunc et supprimera le caractère s'il correspond à un caractère donné comme deuxième argument de TrimRight.

9
putu