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] [zì]]
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]]
拼音轉換應用場景
- 文本搜索
- 用拼音索引文本,支持拼音模糊搜索。
- 漢字排序
- 例如,將 "張三" 排在 "李四" 之後,按照拼音順序排列名字。
- 文本轉換
- 將漢字轉換爲拼音,以便用於語音合成等應用。
最後
-
go-pinyin
是一個強大、易用的 Golang 漢字轉拼音庫。
-
支持多種風格:帶音調、無音調、首字母等。
-
可擴展,支持自定義拼音詞庫。
-
適用於搜索、排序、文本處理等多種場景。
標題: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