命令行参数比如"\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
阅读 6k
1 个回答

这说明,命令行不会将字面量t转为制表符。
那么你需要在你的程序里将转义字符转为真实字符。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题