Bagaimana untuk membuang tanda apostrof/bait daripada ayat rentetan apabila cuba menghuraikan yaml

WBOY
Lepaskan: 2024-02-05 22:45:11
ke hadapan
1153 orang telah melayarinya

"尝试解析

Isi soalan

Berikut adalah contoh

Pustaka penghuraian yaml nampaknya tidak dapat mencetak" Jadi apabila saya menghuraikan ayat dengan " 解析一个句子时,go 在它周围添加字节撇号 (' , pergi tambahkan tanda kutip bait (')

di sekelilingnya

Adakah terdapat beberapa helah untuk membuatnya mencetak/membuat rentetan ringkas/rentetan petikan tanpa menambah apostrof bait?

Kod contoh:

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))
}
Salin selepas log masuk

Cetak some-example: '"some text"'

Mahusome-example:“一些文本”


Jawapan betul


Adakah terdapat beberapa helah untuk membuatnya mencetak/membuat rentetan ringkas/rentetan petikan tanpa menambah apostrof bait?

Sila ambil perhatian bahawa anda sedang mencetak output yaml.marshal iaitu anda sedang mencetak dokumen yaml yang sah dan yaml tidak mempunyai apa-apa yang dipanggil "apostrophes byte". Dalam yaml, rentetan boleh tanpa petikan, petik berganda, atau petik tunggal, tidak kira apa pun, semuanya adalah rentetan.

# all three are strings 
a: foo bar
b: "foo bar"
c: 'foo bar'
Salin selepas log masuk

Jadi keluaran asal anda

some-example: '"some text"'
Salin selepas log masuk

adalah yaml yang sah dengan sempurna, bukan pergi yang menambah petikan tunggal, ia adalah pakej ngopkg.in/yaml.v3 yang melakukannya.

afaict Tiada cara untuk menetapkan tetapan global untuk yaml.encoder yaml.encoder 设置全局设置 使用双引号样式封送每个字符串,但是您可以使用实现 yaml.marshaler 强制 yaml.encoder untuk menyusun setiap rentetan menggunakan gaya petikan berganda, tetapi anda boleh menggunakan pelaksanaan yaml.marshaler

Memaksa yaml.encoder untuk sentiasa mengeluarkan sebarang nilai jenis tersuai ini Double rentetan yang dipetik.

Contohnya:

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
}
Salin selepas log masuk
https://www.php.cn/link/99701e768d9a09b314e43a1d9e3e9dfa

🎜
some-example: "\"some text\""
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk membuang tanda apostrof/bait daripada ayat rentetan apabila cuba menghuraikan yaml. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan