需要时从字符串中删除双引号

问题描述

您好,我正在使用 Golang,我必须在需要时从字符串中删除双引号,在没有双引号的情况下,我不必进行此修剪。

例如,当我有 ""HI"" 时,我必须应用修剪,但没有“HI”。我正在使用下一个代码

strings.Trim(stringVal,"\"")

它起作用了,但后来我使用了 strings.EqualFold(stringVal,"HI") 验证,如果我将修剪应用于像“HI”这样的普通字符串,则比较是错误的。

有没有什么办法可以做修剪,只用带双引号的字符串?

谢谢!

解决方法

如果字符串具有不需要的前缀和后缀,则使用切片表达式将它们切掉:

func trim(s string) string {
    if strings.HasPrefix(s,`""`) && strings.HasSuffix(s,`""`) && len(s) > 2 {
        return s[1 : len(s)-1]
    }
    return s
}

示例:

fmt.Println(trim(`"Hi"`))       // prints "Hi"
fmt.Println(trim(`""Hi""`))     // prints "Hi"
fmt.Println(trim(`""""`))       // prints ""
fmt.Println(trim(`""`))         // prints ""
fmt.Println(trim(`"\j\u\n\k"`)) // prints "\j\u\n\k" 

Run the code on the Go Playground

,

这似乎做到了:

package main
import "strconv"

func main() {
   s,e := strconv.Unquote(`"HI"`)
   if e != nil {
      panic(e)
   }
   println(s == "HI")
}

https://golang.org/pkg/strconv#Unquote