func Paragraph(p string) string 功能的请使用 v0.16.0 版本或者通过 v0.16.0 中相关代码实现类似的需求。cmd/pinyin/ 目录下,现在需要改为使用
go get -u github.com/mozillazg/go-pinyin/cmd/pinyin 来安装命令行工具。-s 参数的值(thanks @wdscxsj via #19):
Normal 改为 zhaoTone 改为 zh4aoTone2 改为 zha4oTone3 改为 zhao4Initials 改为 zhFirstLetter 改为 zFinals 改为 aoFinalsTone 改为 4aoFinalsTone2 改为 a4oFinalsTone3 改为 ao4-s 选项的值(thanks @wdscxsj via #20):NEW 命令行程序支持通过 -s 指定新增的 Tone3 和 FinalsTone3 拼音风格
$ pinyin -s Tone3 请至少输入一个汉字
qing3 zhi4 shao3 shu1 ru4 yi1 ge4 han4 zi4
$ pinyin -s FinalsTone3 请至少输入一个汉字
ing3 i4 ao3 u1 u4 i1 e4 an4 i4
Changed use pinyin-data v0.4.1
0 表示轻声(因为之前并没有正确的实现这个功能, 同时也觉得这个功能没必要)。
顺便修复了 Tone2 中 ü 标轻声的问题(像 侵略 -> qi1n lv0e4 )NEW 新增 Tone3 和 FinalsTone3 拼音风格。
hans := "中国人"
args := pinyin.NewArgs()
args.Style = pinyin.Tone3
fmt.Println("Tone3:", pinyin.Pinyin(hans, args))
// Output: Tone3: [[zhong1] [guo2] [ren2]]
args.Style = pinyin.FinalsTone3
fmt.Println("FinalsTone3:", pinyin.Pinyin(hans, args))
// Output: FinalsTone3: [[ong1] [uo2] [en2]]
func Convert(s string, a *Args) [][]stringfunc LazyConvert(s string, a *Args) []string之所以增加这两个函数是希望 a 参数支持 nil
NEW 命令行程序支持指定拼音风格:
$ pinyin -s Normal 你好
ni hao
Bugfixed 解决韵母 i, u, ü 的问题:根据以下拼音方案,还原出正确的韵母 #8, python-pinyin#26
i 行的韵母,前面没有声母的时候,写成:yi(衣),yɑ(呀),ye(耶), yɑo(腰),you(忧),yɑn(烟),yin(因),yɑnɡ(央),yinɡ(英),yonɡ(雍)。
u 行的韵母,前面没有声母的时候,写成wu(乌),wɑ(蛙),wo(窝), wɑi(歪),wei(威),wɑn(弯),wen(温),wɑnɡ(汪),wenɡ(翁)。
ü行的韵母跟声母j,q,x拼的时候,写成ju(居),qu(区),xu(虚), ü上两点也省略;但是跟声母l,n拼的时候,仍然写成lü(吕),nü(女)。
注意 y 既不是声母也不是韵母。详见 汉语拼音方案
Bugfixed 解决未正确处理鼻音 ḿ, ń, ň, ǹ 的问题:包含鼻音的拼音不应该有声母
NEW 命令行程序支持从标准输入读取数据(支持管道和重定向输入):
$ echo "你好" | pinyin
nǐ hǎo
$ pinyin < hello.txt
nǐ hǎo
NEW Args 结构体新增 field: Fallback func(r rune, a Args) []string
用于处理没有拼音的字符(默认忽略没有拼音的字符):
a := pinyin.NewArgs()
a.Fallback = func(r rune, a pinyin.Args) []string {
return []string{string(r + 1)}
}
fmt.Println(pinyin.Pinyin("中国人abc", a))
// Output: [[zhong] [guo] [ren] [b] [c] [d]]
// or
pinyin.Fallback = func(r rune, a pinyin.Args) []string {
return []string{string(r)}
}
fmt.Println(pinyin.Pinyin("中国人abc", pinyin.NewArgs()))
// Output: [[zhong] [guo] [ren] [a] [b] [c]]
pinyin.LazyPinyin 和 pinyin.Slug (#1))调整对非中文字符的处理:当遇到没有拼音的字符时,直接忽略
// before
fmt.Println(pinyin.Pinyin("中国人abc", pinyin.NewArgs()))
[[zhong] [guo] [ren] [] [] []]
// after
fmt.Println(pinyin.Pinyin("中国人abc", pinyin.NewArgs()))
[[zhong] [guo] [ren]]
yu, y, w 不是声母func NewArgs() ArgsArgs.Separator 无法赋值为 "" 的 BUGNORMAL -> NormalTONE -> ToneTONE2 -> Tone2INITIALS -> InitialsFIRST_LETTER -> FirstLetterFINALS -> FinalsFINALS_TONE -> FinalsToneFINALS_TONE2 -> FinalsTone2