命令行参数比如"\t","\n" 如何在程序运行时不被转义?
编程语言为 golang , 例如实现一个 cut 命令的这个功能: cut -d "\t" 指定分隔符为制表符, 而当程序运行时, 指定的"\t"在程序中已经变成了"\\t",不是自己想要的制表符, 应该如何解决?
package main
import (
"flag"
"fmt"
"strings"
)
// D use -d to specify a separator
var D = flag.String("d", "", "use -d to specify a separator")
func main() {
flag.Parse()
originStr := "a\tb\tc\td e f g"
var resultStr []string
if *D != "" {
resultStr = strings.Split(originStr, *D)
}
fmt.Println(*D)
for i := 0; i < len(resultStr); i++ {
fmt.Println(resultStr[i])
}
}
编译: go build -o cut
➜ test ./cut -d " " 以空格为分隔符
a b c d
e
f
g
➜ test ./cut -d "\t" 以"\t" 为分隔符, \t 被转义成普通字符串了
\t
a b c d e f g
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这说明,命令行不会将字面量t转为制表符。
那么你需要在你的程序里将转义字符转为真实字符。