Heim > Backend-Entwicklung > Golang > So entfernen Sie Apostrophe/Byte-Markierungen aus Zeichenfolgensätzen, wenn Sie versuchen, Yaml zu analysieren

So entfernen Sie Apostrophe/Byte-Markierungen aus Zeichenfolgensätzen, wenn Sie versuchen, Yaml zu analysieren

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2024-02-05 22:45:11
nach vorne
1204 Leute haben es durchsucht

"尝试解析

Frageninhalt

Hier ist ein Beispiel

Die Yaml-Parsing-Bibliothek scheint nicht in der Lage zu sein, zu drucken" Wenn ich also einen Satz mit " 解析一个句子时,go 在它周围添加字节撇号 (' analysiere, fügt go Byte-Apostrophe (')

darum herum hinzu

Gibt es einen Trick, um eine einfache Zeichenfolge/Zeichenfolge in Anführungszeichen zu drucken/zu erstellen, ohne Byte-Apostrophe hinzuzufügen?

Beispielcode:

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))
}
Nach dem Login kopieren

Drucken some-example: '"some text"'

Möchten Siesome-example:“一些文本”


Richtige Antwort


Gibt es einen Trick, um eine einfache Zeichenfolge/Zeichenfolge in Anführungszeichen zu drucken/zu erstellen, ohne Byte-Apostrophe hinzuzufügen?

Bitte beachten Sie, dass Sie die Ausgabe von yaml.marshal drucken, d. h. Sie drucken ein gültiges Yaml-Dokument und das Yaml enthält keine sogenannten „Byte-Apostrophe“. In Yaml kann eine Zeichenfolge ohne Anführungszeichen, doppelte Anführungszeichen oder einfache Anführungszeichen sein, egal was passiert, es sind alles Zeichenfolgen.

# all three are strings 
a: foo bar
b: "foo bar"
c: 'foo bar'
Nach dem Login kopieren

Also Ihre Originalausgabe

some-example: '"some text"'
Nach dem Login kopieren

ist vollkommen gültiges Yaml, es ist nicht go, das die einfachen Anführungszeichen hinzufügt, sondern das ngopkg.in/yaml.v3-Paket, das dies tut.

afaict Es gibt keine Möglichkeit, globale Einstellungen für yaml.encoder yaml.encoder 设置全局设置 使用双引号样式封送每个字符串,但是您可以使用实现 yaml.marshaler 强制 yaml.encoder festzulegen, um jede Zeichenfolge mit doppelten Anführungszeichen zu marsalieren, aber Sie können die Implementierung yaml.marshaler

Zwingt yaml.encoder, immer für jeden Wert dieses benutzerdefinierten Typs Double auszugeben Zeichenfolge in Anführungszeichen.

Zum Beispiel:

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
}
Nach dem Login kopieren
https://www.php.cn/link/99701e768d9a09b314e43a1d9e3e9dfa

🎜
some-example: "\"some text\""
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo entfernen Sie Apostrophe/Byte-Markierungen aus Zeichenfolgensätzen, wenn Sie versuchen, Yaml zu analysieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage