doushun1904
2018-01-25 18:01
浏览 1.4k
已采纳

删除Golang中的双引号或单引号

Shouldn't strconv.Unquote handle both single and double quotes?

See also https://golang.org/src/strconv/quote.go - line 350

However following code returns a syntax error:

s, err := strconv.Unquote(`'test'`)
if err != nil {
  fmt.Println(err)
} else {
  fmt.Println(s)
}

https://play.golang.org/p/TnprqhNdwD1

But double quotes work as expected:

s, err := strconv.Unquote(`"test"`)
if err != nil {
  fmt.Println(err)
} else {
  fmt.Println(s)
}

What am I missing?

图片转代码服务由CSDN问答提供 功能建议

strconv.Unquote 不能同时处理单引号和双引号吗?

另请参见 https://golang.org/src/strconv/quote .go -第350行

,但是以下代码返回语法错误

  s,err:= strconv.Unquote(`'test'`)
if err!= nil {
 fmt.Println(err)
}其他{
 fmt.Println(  s)
} 
   
 
 

https: //play.golang.org/p/TnprqhNdwD1

但双引号可以按预期工作:

  s  ,err:= strconv.Unquote(`“ test”`)
if err!= nil {
 fmt.Println(err)
}否则{
 fmt.Println(s)
} 
   
 
 

我想念什么?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

3条回答 默认 最新

  • doujingqu3030 2018-01-25 21:05
    最佳回答

    There is no ready function for what you want in the standard library.

    What you presented works, but we can make it simpler (and likely more efficient):

    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
    }
    

    Testing it:

    fmt.Println(trimQuotes(`'test'`))
    fmt.Println(trimQuotes(`"test"`))
    fmt.Println(trimQuotes(`"'test`))
    

    Output (try it on the Go Playground):

    test
    test
    "'test
    
    评论
    解决 无用
    打赏 举报
查看更多回答(2条)

相关推荐 更多相似问题