亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法在 golang 中使用“\n”正確拆分字符串

無法在 golang 中使用“\n”正確拆分字符串

Go
小怪獸愛吃肉 2023-05-15 15:43:10
我試圖將free命令的輸出分成 3 行。free 的一般輸出是total        used        free      shared  buff/cache   available Mem:       16309236    11129884      860300      534300     4319052     4306208 Swap:      20971516      234236    20737280但是當我使用 strings.Split() 時,golang該Split函數的行為現在符合預期。我嘗試調試它但找不到任何東西。請幫忙。package mainimport "os/exec"import "github.com/golang/glog"import "fmt"import "strings"import "errors"func thisWorks() {    str_out := "hello world \n How are you \nthis is good"    lines := strings.Split(str_out, "\n")    fmt.Printf("lines is  \n%s\n", lines)}func GetFreeOutput() error {    var errMsg string    bytes_out, err := exec.Command("free").Output()    // This shows that the output has 10 (newline) in it.    fmt.Println(bytes_out)    if err != nil {        errMsg = "Error geting output of free command"        glog.Fatal(errMsg)        return errors.New(errMsg)    }    str_out := string(bytes_out)    fmt.Printf("str_out is  \n%s", str_out)    // This is not splitting the lines, it is converting the whole output to a single line.    fmt.Println("\nLines are ", strings.Split(str_out, "\n"))    index_of_newline := strings.Index(str_out, "\n")    // This gives the index of "\n" as 79 on my machine, which is correct.    fmt.Printf("\nIndex is %d", index_of_newline)    fmt.Println("\nLine using index are ", strings.Split(str_out, string(str_out[index_of_newline])))    return nil}func main() {    err := GetFreeOutput()    fmt.Printf("Error is %s", err)}
查看完整描述

1 回答

?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

Split 正在按預期工作。問題在于如何打印線條。


下面 Println 的第二個參數是一個切片。


 // This is not splitting the lines, it is converting the whole output to a single line.

fmt.Println("\nLines are ", strings.Split(str_out, "\n"))

根據fmt文檔,切片打印為:


[elem0 elem1 ...]

請注意,元素由空格分隔。按 \n 拆分并打印實際上會將 \n 替換為 ' '。嘗試此代碼以確認拆分是否按預期工作:


for i, line := range strings.Split(str_out, "\n") {

   fmt.Println(i, line)

}


查看完整回答
反對 回復 2023-05-15
  • 1 回答
  • 0 關注
  • 209 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號