【问题标题】:Removing single quotes from a string - "Cannot use "'" (type untyped string) as type byte" [closed]从字符串中删除单引号 - “不能使用“'”(类型无类型字符串)作为类型字节”[关闭]
【发布时间】: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 问题的适用性投票,而不是问题的有效性、来源或优点。

标签: string go strip


【解决方案1】:

在 Go 中,双引号表示字符串文字,单引号表示符文或字节文字。它们不像其他语言那样可以互换。

因此,文字单引号拼写为'\''

【讨论】:

  • 谢谢,这已经解决了这个问题!我不确定为什么这个问题被关闭了,但无论如何我现在都有工作代码了。
猜你喜欢
  • 2021-07-17
  • 2019-09-21
  • 2022-08-09
  • 2020-01-17
  • 1970-01-01
  • 2014-12-12
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多