Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengeluarkan Aksen dengan Cekap daripada Go Strings?

Bagaimana untuk Mengeluarkan Aksen dengan Cekap daripada Go Strings?

Barbara Streisand
Lepaskan: 2024-11-02 20:09:31
asal
1014 orang telah melayarinya

How to Efficiently Remove Accents from Go Strings?

Go Rentetan: Menghapuskan Aksen

Dalam Go, mengalih keluar aksen daripada rentetan dan menukarkannya kepada yang setara tanpa aksen memberikan cabaran tertentu. Berikut ialah penerokaan isu dan penyelesaian yang berpotensi.

Satu percubaan untuk menyelesaikan isu ini termasuk pelaksanaan fungsi berdasarkan contoh yang disediakan dalam blog bertajuk "Performing Magic." Contohnya melibatkan penggunaan pakej unikod/norma dan teks/transformasi.

<code class="go">package main

import (
    "bytes"
    "code.google.com/p/go.text/transform"
    "code.google.com/p/go.text/unicode/norm"
    "fmt"
    "unicode"
)

func isMn(r rune) bool {
    return unicode.Is(unicode.Mn, r) // Mn: nonspacing marks
}

func main() {
    r := bytes.NewBufferString("Your Śtring")
    t := transform.Chain(norm.NFD, transform.RemoveFunc(isMn), norm.NFC)
    r = transform.NewReader(r, t)
    fmt.Println(r)
}</code>
Salin selepas log masuk

Walau bagaimanapun, pelaksanaan ini bukan tanpa hadnya. Versi Go yang lebih terbaharu (1.5 dan seterusnya) memperkenalkan perubahan yang mungkin menjejaskan fungsinya.

Go 1.5 dan Pakej runes

Go 1.5 memperkenalkan pakej rune, yang termasuk fungsi Alih keluar yang memudahkan yang memudahkan proses penyingkiran aksen.

<code class="go">func Remove() transform.Transformer</code>
Salin selepas log masuk

Fungsi Alih keluar menerima satu siri kategori Unikod kod, dan ia akan mengalih keluar sebarang rune yang termasuk dalam kategori tersebut daripada rentetan yang diubah. Sebagai contoh, untuk mengalih keluar tanda tanpa jarak (Mn), anda boleh menggunakan:

<code class="go">t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)</code>
Salin selepas log masuk

Rantaian transformasi ini akan menukar aksara beraksen kepada persamaan bukan beraksen, menjadikannya penyelesaian yang lebih berkesan dan ringkas untuk penyingkiran loghat dalam Pergi.

Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Aksen dengan Cekap daripada Go Strings?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan