首頁 >後端開發 >Golang >如何區分 Go 字串輸出中的轉義字元和實際換行符?

如何區分 Go 字串輸出中的轉義字元和實際換行符?

Susan Sarandon
Susan Sarandon原創
2024-11-28 03:46:10838瀏覽

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

區分Go 中的換行符

在Go 中,從外部命令讀取字串輸出可能會給區分「n」換行符帶來挑戰在字串內容和實際換行符內。

問題

使用strings.Split(output, "n") 或bufio.NewScanner(strings.NewReader(output)) 等方法時,字串緩衝區在「n」字元的任何實例處分裂,無論是換行符還是字串內容的一部分。

問題的出現​​是因為 Go 轉義了反引號括起來的字串文字中的換行符。要區分轉義換行符和實際換行符,您可以使用以下方法:

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

此函數將嵌入的轉義換行符轉換為實際換行符,允許正確分割行而不破壞字串內容。

用法範例

給定以下字串輸出:

First line: "test1"
Second line: "123;\n234;\n345;"
Third line: "456;\n567;"
Fourth line: "test4"

函數會產生三行而不是七行:

[]string{"First line: \"test1\"", "Second line: \"123;\n234;\n345;\"", "Third line: \"456;\n567;\""}

此方法允許解析多行字串,同時保留內部換行符。

以上是如何區分 Go 字串輸出中的轉義字元和實際換行符?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn