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())
}

上一篇 下一篇

猜你喜欢

热点阅读