为了账号安全,请及时绑定邮箱和手机立即绑定

unicode 按字面输出而不是 unicode

unicode 按字面输出而不是 unicode

Go
人到中年有点甜 2021-11-29 19:43:18
我正在创建一个 IRC 机器人,使用 Go 作为第一个项目来掌握该语言。bot 功能之一是从 TVmaze API 抓取数据并显示在频道中。我导入了一个 env 包,它允许机器人管理员定义输出的显示方式。例如 SHOWSTRING="#showname# - #status# – #network.name#"我正在尝试向它添加功能,以便管理员可以使用 IRC 格式化功能,\u0002 this is bold \u0002例如可以访问该功能。我有一个函数可以生成正在返回并显示在通道中的字符串。func generateString(show Show) string {  str := os.Getenv("SHOWSTRING")  r := strings.NewReplacer(    "#ID#", string(show.ID),    "#showname#", show.Name,    "#status#", show.Status,    "#network.name#", show.Network.Name,  )  result := r.Replace(str)  return result}从我读过的内容来看,我认为我需要使用rune数据类型而不是字符串,然后在输出之前将符文转换为字符串。我正在使用https://github.com/thoj/go-irceven包与 IRC 交互。虽然我认为使用rune是正确的方法,但我尝试了一些让我感到困惑的事情。如果我\u0002从 env添加到 SHOWSTRING,它会返回\u0002House\u0002 - Ended - Fox. 我这样做con.Privmsg(roomName, tvmaze.ShowLookup('house'))但是,如果我尝试con.Privmsg(roomName, "\u0002This should be bold\u0002")它输出粗体文本。这里最好的选择是什么?如果它将字符串转换为符文,然后再转换回字符串,我该怎么做?
查看完整描述

1 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

我需要strconv.Unquote()在函数中返回时使用。


新的 generateString 函数现在输出正确的字符串,如下所示


func generateString(show Show) string {

  str := os.Getenv("SHOWSTRING")

  r := strings.NewReplacer(

    "#ID#", string(show.ID),

    "#showname#", show.Name,

    "#status#", show.Status,

    "#network.name#", show.Network.Name,

  )

  result := r.Replace(str)

  ret, err := strconv.Unquote(`"` + result + `"`)

  if err != nil {

    fmt.Println("Error unquoting the string")

  }

  return ret

}


查看完整回答
反对 回复 2021-11-29
  • 1 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信