gpt4 book ai didi

string - 无法在 golang 中使用 "\n"正确拆分字符串

转载 作者:数据小太阳 更新时间:2023-10-29 03:38:33 24 4
gpt4 key购买 nike

我试图将 free 命令的输出分成 3 行。 free 的一般输出是

可用的免费共享 buff/缓存总数
内存:16309236 11129884 860300 534300 4319052 4306208
交换:20971516 234236 20737280

但是当我使用 golang 的 strings.Split() 时,Split 函数现在按预期运行。我尝试调试它但找不到任何东西。

请帮忙。

package main

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

最佳答案

Split 正在如您所愿地工作。问题在于如何打印线条。

下面 Println 的第二个参数是一个 slice 。

 // 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文档中, slice 打印为:

[elem0 elem1 ...]

请注意,元素由空格分隔。按\n 拆分并打印实际上会将\n 替换为 ' '。尝试此代码以确认拆分是否按预期工作:

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

关于string - 无法在 golang 中使用 "\n"正确拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53808785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com