Maison > développement back-end > Golang > Comment puis-je faire la distinction entre les caractères de nouvelle ligne échappés et réels dans la sortie Go String ?

Comment puis-je faire la distinction entre les caractères de nouvelle ligne échappés et réels dans la sortie Go String ?

Susan Sarandon
Libérer: 2024-11-28 03:46:10
original
902 Les gens l'ont consulté

How Can I Distinguish Between Escaped and Actual Newline Characters in Go String Output?

Différenciation des caractères de nouvelle ligne dans Go

Dans Go, la lecture de la chaîne de sortie à partir de commandes externes peut poser des problèmes pour différencier le caractère de nouvelle ligne « n » dans le contenu de la chaîne et les sauts de ligne réels.

Le Problème

Lors de l'utilisation de méthodes telles que strings.Split(output, "n") ou bufio.NewScanner(strings.NewReader(output)), le tampon de chaîne se divise à n'importe quelle instance du caractère "n" , qu'il s'agisse d'un caractère de saut de ligne ou d'une partie du contenu de la chaîne.

Le Solution

Le problème survient parce que Go échappe aux caractères de saut de ligne dans les littéraux de chaîne entourés de backticks. Pour différencier les sauts de ligne échappés des sauts de ligne réels, vous pouvez utiliser l'approche suivante :

import "strings"

func ProcessStringOutput(output []byte) []string {
    // Replace escaped line breaks with actual line breaks
    output = []byte(strings.Replace(string(output), `\n`, "\n", -1))

    // Split into lines
    return strings.Split(string(output), "\n")
}
Copier après la connexion

Cette fonction convertit les sauts de ligne échappés intégrés en sauts de ligne réels, permettant une division de ligne appropriée sans perturber le contenu de la chaîne.

Exemple d'utilisation

Étant donné la chaîne suivante sortie :

First line: "test1"
Second line: "123;\n234;\n345;"
Third line: "456;\n567;"
Fourth line: "test4"
Copier après la connexion

La fonction produira trois lignes au lieu de sept :

[]string{"First line: \"test1\"", "Second line: \"123;\n234;\n345;\"", "Third line: \"456;\n567;\""}
Copier après la connexion

Cette méthode permet d'analyser des chaînes multilignes tout en préservant les caractères de nouvelle ligne internes.

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:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal