Golang:转义单引号

ymzxtsji  于 2023-04-18  发布在  Go
关注(0)|答案(4)|浏览(174)

在go中有没有转义单引号的方法?
以下:

str := "I'm Bob, and I'm 25."
str = strings.Replace(str, "'", "\'", -1)

给出错误:未知转义序列:”
我希望str是

"I\'m Bob, and I\'m 25."
sc4hvdpw

sc4hvdpw1#

你还需要转义字符串中的斜杠。替换。

str := "I'm Bob, and I'm 25."
str = strings.ReplaceAll(str, "'", "\\'")

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

nukf8bse

nukf8bse2#

+@KeylorSanchez回答:你可以把替换字符串用反引号括起来:

strings.ReplaceAll(str, "'", `\'`)
7z5jn7bk

7z5jn7bk3#

// addslashes()
func Addslashes(str string) string {
    var buf bytes.Buffer
    for _, char := range str {
        switch char {
        case '\'':
            buf.WriteRune('\\')
        }
        buf.WriteRune(char)
    }
    return buf.String()
}

如果要转义单引号/双引号或backlash,可以参考https://github.com/syyongx/php2go

zmeyuzjn

zmeyuzjn4#

strings.Replacer可以用来一次转义多个不同的字符。如果你想在不同的地方重用相同的逻辑,也很方便。

quoteEscaper := strings.NewReplacer(`'`, `\'`, `"`, `\"`)
str := `They call me "Bob", and I'm 25.`
str = quoteEscaper.Replace(str)

https://go.dev/play/p/6IFecrHmN3z

相关问题