Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengeluarkan Aksen dengan Cekap daripada Go Strings?
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 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!