不应该同时strconv.Unquote处理单引号和双引号?
另请参阅https://golang.org/src/strconv/quote.go - 第 350 行
但是以下代码返回一个syntax error:
s, err := strconv.Unquote(`'test'`)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(s)
}
Run Code Online (Sandbox Code Playgroud)
https://play.golang.org/p/TnprqhNdwD1
但双引号按预期工作:
s, err := strconv.Unquote(`"test"`)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(s)
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
标准库中没有您想要的功能。
您展示的内容有效,但我们可以使其更简单(并且可能更高效):
func trimQuotes(s string) string {
if len(s) >= 2 {
if c := s[len(s)-1]; s[0] == c && (c == '"' || c == '\'') {
return s[1 : len(s)-1]
}
}
return s
}
Run Code Online (Sandbox Code Playgroud)
测试它:
fmt.Println(trimQuotes(`'test'`))
fmt.Println(trimQuotes(`"test"`))
fmt.Println(trimQuotes(`"'test`))
Run Code Online (Sandbox Code Playgroud)
输出(在Go Playground上试试):
test
test
"'test
Run Code Online (Sandbox Code Playgroud)