區分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中文網其他相關文章!