从字符串中删除单引号-“不能使用“'”(类型无类型字符串)作为类型字节”
我有一个字符串,可能会或可能不会被双引号或单引号包围。我想删除第一组引号(如果存在)。所以:
"foo" --> foo
""foo"" --> "foo"
'foo' --> foo
'foo --> foo
等等。
我找到了这个答案,它描述了使用切片表达式来索引字符串的第一个和最后一个字符,然后如果其中一个字符是引号,则获取字符串的一部分。所以我试图调整代码以涵盖单引号和双引号:
func stripQuotes(str string) string {
s := str[:]
if len(s) > 0 && (s[0] == '"' || s[0] == "'") {
s = s[1:]
}
if len(s) > 0 && (s[len(s)-1] == '"' || s[len(s)-1] == "'") {
s = s[:len(s)-1]
}
return s
}
但它返回一个错误:
cannot convert "'" (type untyped string) to type byte
cannot convert "'" (type untyped string) to type byte
所以我尝试将单引号转换为字节,但这也不起作用:
...
if len(s) > 0 && (s[0] == '"' || s[0] == byte("'")) {
...
它返回错误:
我知道这里缺少一些基本的字符串处理知识,但我不确定是什么。有没有一种简单的方法来识别字符串中的单引号?
回答
在 Go 中,双引号表示字符串文字,单引号表示符文或字节文字。它们不能像其他语言一样互换。
因此拼写为文字单引号'''。