Golang拼音处理
2021-11-11 本文已影响0人
EasyNetCN
package utility
import (
"regexp"
"strings"
"github.com/mozillazg/go-pinyin"
)
func GetPinyin(txt string) string {
sb := new(strings.Builder)
for _, c := range txt {
if c > 128 {
str := string([]rune{c})
strs := pinyin.LazyConvert(str, nil)
if len(strs) > 0 {
sb.WriteString(strs[0])
} else {
sb.WriteString(str)
}
} else {
sb.WriteString(string([]rune{c}))
}
}
return strings.TrimSpace(sb.String())
}
func GetFirstSpell(txt string) string {
sb := new(strings.Builder)
for _, c := range txt {
if c > 128 {
str := string([]rune{c})
strs := pinyin.LazyConvert(str, nil)
if len(strs) > 0 {
sb.WriteString(string(strs[0][0]))
} else {
sb.WriteString(str)
}
} else {
r := regexp.MustCompile(`\W`)
str := r.ReplaceAllString(string([]rune{c}), "")
if str != "" {
sb.WriteString(str)
}
}
}
return strings.TrimSpace(sb.String())
}