最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • 尝试解析 yaml 时如何从字符串句子中删除撇号/字节标记

    "尝试解析

    问题内容

    这里是实例

    yaml解析库好像无法打印"
    所以当我用 " 解析一个句子时,go 在它周围添加字节撇号 (')

    是否有一些技巧可以让它打印/制作简单的字符串/引号字符串,而不添加字节撇号?

    示例代码:

    import (
        "fmt"
        "log"
    
        yaml "gopkg.in/yaml.v3"
    )
    
    type X struct {
        Example string `yaml:"some-example"`
    }
    
    func main() {
        item := X{
            Example: fmt.Sprint(""some text""),
        }
    
        res, err := yaml.Marshal(item)
        if err != nil {
            log.Fatal(err)
        }
        fmt.Print(string(res))
    }

    打印 some-example: '"some text"'

    想要some-example:“一些文本”

    正确答案

    是否有一些技巧可以让它打印/制作简单的字符串/引号字符串,而不添加字节撇号?

    请注意,您正在打印 yaml.marshal 的输出,即您正在打印有效的 yaml 文档,并且 yaml 没有任何称为“字节撇号”的内容。在 yaml 中,字符串可以是 不加引号双引号,或 单引号,无论如何,它们都是字符串。

    # all three are strings 
    a: foo bar
    b: "foo bar"
    c: 'foo bar'
    

    所以你的原始输出

    some-example: '"some text"'
    

    是完全有效的 yaml,添加单引号的不是 go,而是 ngopkg.in/yaml.v3 包就是这样做的。

    afaict 无法为 yaml.encoder 设置全局设置 使用双引号样式封送每个字符串,但是您可以使用实现 yaml.marshaler 强制 yaml.encoder 始终为该自定义类型的任何值输出双引号字符串。

    例如:

    type doublequotedstring string
    
    func (s doublequotedstring) marshalyaml() (interface{}, error) {
        return yaml.node{
            kind:  yaml.scalarnode,
            style: yaml.doublequotedstyle, // <- this is the relevant part
            value: string(s),
        }, nil
    }
    

    https://www.codesou.cn/link/99701e768d9a09b314e43a1d9e3e9dfa

    some-example: ""some text""
    
    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » 尝试解析 yaml 时如何从字符串句子中删除撇号/字节标记
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情