【发布时间】:2021-08-22 08:38:56
【问题描述】:
我有一个字符串,它可能用双引号或单引号括起来也可能不括起来。我想删除第一组引号(如果存在)。所以:
"foo" --> foo
""foo"" --> "foo"
'foo' --> foo
'foo --> foo
等等
我找到了this answer,它描述了使用切片表达式来索引字符串的第一个和最后一个字符,然后如果其中一个字符是引号,则获取字符串的切片。所以我尝试调整代码以涵盖单引号和双引号:
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
所以我尝试将单引号转换为字节,但这也没有用:
...
if len(s) > 0 && (s[0] == '"' || s[0] == byte("'")) {
...
返回错误:
cannot convert "'" (type untyped string) to type byte
我知道这里缺少一些基本的字符串处理知识,但我不确定是什么。有没有一种简单的方法来识别字符串中的单引号?
【问题讨论】:
-
“这个问题不可重现或者是由拼写错误引起的” - 好的。没有人说他们已经尝试过重现它但失败了,并且该错误绝对可以在 Go 操场上重现:play.golang.org/p/QJbLjC2gib9。如果我不了解该语言的某个功能是如何工作的,那么该错误不是由拼写错误引起的 - 如果是这种情况,那么每个 SO 问题都应该因此而关闭。有人愿意进一步解释吗?
-
当结束一个问题时,澄清文本说“虽然类似的问题可能是这里的主题,但这个问题的解决方式不太可能帮助未来的读者。”语法错误很容易使用网络上的现有资源解决,并且不会创造新知识,因此许多人认为这些问题不适合 SO。你不必同意这一点。不要在这里面读任何东西。针对 SO 问题的适用性投票,而不是问题的有效性、来源或优点。