golang,go,博客,开源,编程
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
结构体参数进行配置。
args := pinyin.NewArgs()
args.Style = pinyin.Tone // 设置拼音风格为带音调
py := pinyin.Pinyin("汉字", args)
fmt.Println(py) // 输出: [[hàn] [zì]]
args.Style = pinyin.Normal
py := pinyin.Pinyin("汉字", args)
fmt.Println(py) // 输出: [[han] [zi]]
args.Style = pinyin.Tone2
py := pinyin.Pinyin("汉字", args)
fmt.Println(py) // 输出: [[han4] [zi4]]
args.Style = pinyin.Initials
py := pinyin.Pinyin("汉字", args)
fmt.Println(py) // 输出: [[h] [z]]
args.Style = pinyin.Finals
py := pinyin.Pinyin("汉字", args)
fmt.Println(py) // 输出: [[an] [i]]
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]]