如何取消对HTML字符串中的引号进行转义

时间:2018-12-07 03:04:06

标签: go html-escape-characters

我在Go中有一个字符串,如下所示:

Hello world ! <a href=\"www.google.com\">Google</a>

引号已转义,我想获取不带反斜杠的字符串。

我尝试使用html.UnescapeString,但没有使用我想要的。我的问题有什么解决办法吗?

3 个答案:

答案 0 :(得分:1)

使用strings.NewReplacer()

  

func NewReplacer(oldnew ... string)*替换器

package main

    import (
        "bytes"
        "fmt"
        "log"
        "strings"

        "golang.org/x/net/html"
    )

    func main() {
        const htm = `
            Hello world ! <a href=\"www.google.com\">Google</a>
        `
        // Code to get the attribute value
        var out string
        r := bytes.NewReader([]byte(htm))
        doc, err := html.Parse(r)
        if err != nil {
            log.Fatal(err)
        }
        var f func(*html.Node)
        f = func(n *html.Node) {
            if n.Type == html.ElementNode && n.Data == "a" {
                for _, a := range n.Attr {
                    out = a.Val
                }
            }
            for c := n.FirstChild; c != nil; c = c.NextSibling {
                f(c)
            }
        }
        f(doc)
        // Code to format the output string.
        rem := `\"`
        rep := strings.NewReplacer(rem, " ")
        fmt.Println(rep.Replace(out))
    }

输出:

  

www.google.com

答案 1 :(得分:1)

<块引用>

我想得到没有反斜杠的字符串。

这是一个简单的问题,但现有的两个答案对于这样简单的问题来说都太复杂了。

package main

import (
    "fmt"
    "strings"
)

func main() {
    s := `Hello world ! <a href=\"www.google.com\">Google</a>`
    fmt.Println(s)
    fmt.Println(strings.Replace(s, `\"`, `"`, -1))
}

https://play.golang.org/p/7XX7jJ3FVFt 尝试

HTH

答案 2 :(得分:0)

假设您使用的是{% for item in files %} {{item.find('string')}} {% endfor %},则要么要将整个内容存储为html/template,要么将URL存储为template.HTML。您可以在此处查看操作方法:https://play.golang.org/p/G2supatMfhK

template.URL