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
Barbara Streisandasal
2024-11-02 20:09:31950semak imbas

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>

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>

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>

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!

Kenyataan:
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