如何在 golang 中读取“\t”作为制表符
How to read "\t" as tab in golang
我试图将 "\t"
从 shell 解析为 TAB
,但是,它不起作用。
这里我举个简单的例子
package main
import (
"flag"
"fmt"
)
func main() {
var sep string
flag.StringVar(&sep, "sep", " ", "separator")
flag.Parse()
fmt.Println("name" + sep + "xxx")
// separator is quoted by golang
fmt.Printf("%q\n", sep)
}
结果:
$ go run main.go -sep '\t'
name\txxx
"\t"
有简单的解决方法吗?
\t
是一个反斜杠转义符,表示制表符(例如,在解释的字符串文字中)。如果你有反斜杠转义,你可以使用 strconv.Unquote()
到 "decode" 它(进入制表符)。
您必须知道的一件事:strconv.Unquote()
要求其参数用引号引起来,例如你必须通过 "\t"
而不是简单地 \t
.
sep, err := strconv.Unquote(`"` + sep + `"`)
if err != nil {
panic(err)
}
加上运行go run main.go -sep '\t'
,输出为:
name xxx
"\t"
查看相关问题:
我试图将 "\t"
从 shell 解析为 TAB
,但是,它不起作用。
这里我举个简单的例子
package main
import (
"flag"
"fmt"
)
func main() {
var sep string
flag.StringVar(&sep, "sep", " ", "separator")
flag.Parse()
fmt.Println("name" + sep + "xxx")
// separator is quoted by golang
fmt.Printf("%q\n", sep)
}
结果:
$ go run main.go -sep '\t'
name\txxx
"\t"
有简单的解决方法吗?
\t
是一个反斜杠转义符,表示制表符(例如,在解释的字符串文字中)。如果你有反斜杠转义,你可以使用 strconv.Unquote()
到 "decode" 它(进入制表符)。
您必须知道的一件事:strconv.Unquote()
要求其参数用引号引起来,例如你必须通过 "\t"
而不是简单地 \t
.
sep, err := strconv.Unquote(`"` + sep + `"`)
if err != nil {
panic(err)
}
加上运行go run main.go -sep '\t'
,输出为:
name xxx
"\t"
查看相关问题: