Heim > Artikel > Backend-Entwicklung > So entfernen Sie Apostrophe/Byte-Markierungen aus Zeichenfolgensätzen, wenn Sie versuchen, Yaml zu analysieren
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 ('
)
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)) }
Drucken some-example: '"some text"'
Möchten Siesome-example:“一些文本”
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'
Also Ihre Originalausgabe
some-example: '"some text"'
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
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 }https://www.php.cn/link/99701e768d9a09b314e43a1d9e3e9dfa🎜
some-example: "\"some text\""
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!