我正在嘗試通過以下代碼讀取由 linux 命令生成的某些字符串輸出:out, err := exec.Command("sh", "-c", cmd).Output()以上是[]byte類型,如何區(qū)分行內(nèi)容中包含的“\n”字符與真正的換行符?我試過strings.Split(output, "\n")和bufio.NewScanner(strings.NewReader(output))但是每當看到“\n”字符時,它們都會拆分整個字符串緩沖區(qū)。好的,澄清一下,“不真實”的中斷是包含在字符串中的“\n”字符,如下所示, Print first result: "123;\n234;\n"Print second result: "456;\n"整個輸出是一個大的多行字符串,它可能還包含一些其他帶引號的字符串,我在我的go程序中處理整個字符串輸出,但我無法控制命令輸出并在“之前添加反斜杠\n" 字符。進一步澄清:我的意思是處理包含字符串的字節(jié)序列,并希望保留\n內(nèi)部字符串中包含的“ ”并使用外層“ \n”來斷行。所以對于以下字節(jié)序列:First line: "test1"Second line: "123;\n234;\n345;"Third line: "456;\n567;"Fourth line: "test4"我想在處理整個序列時得到 3 行,而不是總共得到 7 行。這是一個舊項目,但我記得我可以使用Python直接使用“ for line in f”之類的語法獲取3行,并打印第二個內(nèi)部字符串的內(nèi)容而不是渲染它。
3 回答

海綿寶寶撒
TA貢獻1809條經(jīng)驗 獲得超8個贊
您的“\n”實際上可能是換行符的轉(zhuǎn)義版本。您可以通過搜索轉(zhuǎn)義版本并替換為非轉(zhuǎn)義版本,用真正的換行符替換它們:
strings.Replace(sourceStr, `\n`, "\n", -1)
由于反引號內(nèi)的字符串文字可以寫在多行上,Go 會轉(zhuǎn)義它看到的任何換行符。

米琪卡哇伊
TA貢獻1998條經(jīng)驗 獲得超6個贊
“真實”和“非真實”換行符之間沒有區(qū)別。
如果您使用的是類 Unix 系統(tǒng),則文本文件中的行尾由 LF 或'\n'
字符表示。'\n'
一行中間不能有字符。
內(nèi)存中的字符串可以包含任意數(shù)量的'\n'
字符。將字符串"foo\nbar\n"
寫入文本文件時,將創(chuàng)建兩行,"foo"
而"bar"
.
之間沒有有效的區(qū)別
fmt.Println("foo")fmt.Println("bar")
和
fmt.Printf("foo\nbar\n")
兩者都打印相同的 2 行序列,如下所示:
fmt.Println("foo\nbar")
- 3 回答
- 0 關注
- 276 瀏覽
添加回答
舉報
0/150
提交
取消