Heim >Backend-Entwicklung >Golang >Wie kann ich bei der Go-String-Ausgabe zwischen Escapezeichen und tatsächlichen Newline-Zeichen unterscheiden?
Unterscheiden von Newline-Zeichen in Go
In Go kann das Lesen der Zeichenfolgenausgabe von externen Befehlen eine Herausforderung bei der Unterscheidung zwischen dem „n“ Newline-Zeichen darstellen innerhalb des String-Inhalts und der tatsächlichen Zeilenumbrüche.
Die Problem
Bei Verwendung von Methoden wie strings.Split(output, "n") oder bufio.NewScanner(strings.NewReader(output)) wird der String-Puffer an jeder Instanz des „n“-Zeichens geteilt , unabhängig davon, ob es sich um ein Zeilenumbruchzeichen oder einen Teil des String-Inhalts handelt.
Das Lösung
Das Problem entsteht, weil Go Zeilenumbruchzeichen innerhalb von String-Literalen, die in Backticks eingeschlossen sind, maskiert. Um zwischen maskierten und echten Zeilenumbrüchen zu unterscheiden, können Sie den folgenden Ansatz verwenden:
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") }
Diese Funktion wandelt eingebettete maskierte Zeilenumbrüche in tatsächliche Zeilenumbrüche um und ermöglicht so eine ordnungsgemäße Zeilenaufteilung ohne Unterbrechung des Zeichenfolgeninhalts.
Beispielverwendung
Gegeben sei die folgende Zeichenfolge Ausgabe:
First line: "test1" Second line: "123;\n234;\n345;" Third line: "456;\n567;" Fourth line: "test4"
Die Funktion erzeugt drei statt sieben Zeilen:
[]string{"First line: \"test1\"", "Second line: \"123;\n234;\n345;\"", "Third line: \"456;\n567;\""}
Diese Methode ermöglicht das Parsen mehrzeiliger Zeichenfolgen unter Beibehaltung interner Zeilenumbrüche.
Das obige ist der detaillierte Inhalt vonWie kann ich bei der Go-String-Ausgabe zwischen Escapezeichen und tatsächlichen Newline-Zeichen unterscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!