如何在Go中获取符文的十进制值?

时间:2014-10-07 17:18:45

标签: string parsing unicode go ncr

我需要解析一些字符串并通过将任何特殊字符解析为“â”TO&#226来清理它们。这是十进制编码。我知道如何使用this将其解析为Unicode,但我需要十进制代码。整个想法是替换那些特殊字符,如果它们包含特殊字符,则返回整个字符串。例如:

text := "chitâra"
text := parseNCRs(text) //can be by reference
parseNCRs(&text) //or passing the pointer
fmt.Println(text) //Outputs: "chitâra"

1 个答案:

答案 0 :(得分:4)

字符串上的范围以获取符文的数值。

func escape(s string) string {
  var buf bytes.Buffer
  for _, r := range s {
    if r > 127 {
        fmt.Fprintf(&buf, "&#%d;", r)
    } else {
        buf.WriteRune(r)
    }
  }
  return buf.String()
}

playground

如果您要转义HTML或XML,那么您还应该处理其他特殊字符:

func escape(s string) string {
  var buf bytes.Buffer
  for _, r := range s {
    if r > 127  || r == '<' || r == '>' || r == '&' || r == '"' || r = '\'' {
        fmt.Fprintf(&buf, "&#%d;", r)
    } else {
        buf.WriteRune(r)
    }
  }
  return buf.String()
}