golang 每日一庫之 go-pinyin

go-pinyin 漢字轉拼音庫

今天要介紹的庫是一個拼音庫,這個庫相對比較冷門,但是開發過母嬰類 app 的道友可能知道。

go-pinyin 是一個用於將漢字轉換爲拼音的 Golang 庫,提供多種模式,支持帶音調、無音調、首字母提取等功能。

該庫適用於拼音搜索、漢字排序、文本轉換等場景。

安裝

使用 go get 下載安裝:

go get -u github.com/mozillazg/go-pinyin

基本用法

package main
import (
	"fmt"
	"github.com/mozillazg/go-pinyin"
)
func main() {
	hans := "漢字轉拼音"
	py := pinyin.Pinyin(hans, pinyin.NewArgs())
	fmt.Println(py) // 輸出: [[han] [zi] [zhuan] [pin] [yin]]
}

默認情況下,Pinyin 方法會返回每個漢字的拼音,採用無音調的格式。

模式選項

go-pinyin 提供了多種模式,用戶可以通過 pinyin.Args 結構體參數進行配置。

1. 帶音調的拼音

args := pinyin.NewArgs()
args.Style = pinyin.Tone // 設置拼音風格爲帶音調
py := pinyin.Pinyin("漢字", args)
fmt.Println(py) // 輸出: [[hàn] []]

2. 無音調(默認)

args.Style = pinyin.Normal
py := pinyin.Pinyin("漢字", args)
fmt.Println(py) // 輸出: [[han] [zi]]

3. 數字音調

args.Style = pinyin.Tone2
py := pinyin.Pinyin("漢字", args)
fmt.Println(py) // 輸出: [[han4] [zi4]]

4. 聲母(首字母)

args.Style = pinyin.Initials
py := pinyin.Pinyin("漢字", args)
fmt.Println(py) // 輸出: [[h] [z]]

5. 僅韻母

args.Style = pinyin.Finals
py := pinyin.Pinyin("漢字", args)
fmt.Println(py) // 輸出: [[an] [i]]

6. 帶 ü 的拼音

args.Style = pinyin.Tone3
py := pinyin.Pinyin("綠", args)
fmt.Println(py) // 輸出: [[lü4]]

獲取拼音首字母

如果只想提取拼音的首字母,可以使用 pinyin.FirstLetter

py := pinyin.LazyPinyin("漢字", pinyin.NewArgs())
fmt.Println(py) // 輸出: [h z]

自定義拼音詞庫

可以爲特定漢字或短語指定拼音:

customDict := map[string]string{
	"重慶""chóng qìng",
}
args := pinyin.NewArgs()
args.Fallback = func(r rune, a pinyin.Args) []string {
	if val, ok := customDict[string(r)]; ok {
		return []string{val}
	}
	return []string{string(r)}
}
py := pinyin.Pinyin("重慶", args)
fmt.Println(py) // 輸出: [[chóng] [qìng]]

拼音轉換應用場景

  1. 文本搜索
  1. 漢字排序
  1. 文本轉換

最後

標題:golang 每日一庫之 go-pinyin
作者:mooncakeee
地址:http://blog.dd95828.com/articles/2025/03/21/1742517677048.html
聯繫:scotttu@163.com

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/gO-j9_VvYYBI-9bsXxFKcA