Closed molizz closed 6 years ago
@molizz Thanks for your PR!
这个需求也可以通过 Fallback
参数实现,不一定要添加新的参数。比如你举的那个例子:
// cat test.go
package main
import (
"fmt"
"strings"
"github.com/mozillazg/go-pinyin"
)
func IsNumberOrLetter(n int32) bool {
switch {
case n >= 48 && n <= 57: // 数字
return true
case n >= 65 && n <= 90: // 大写字母
return true
case n >= 97 && n <= 122: // 小写字母
return true
default:
return false
}
return false
}
func main() {
a := pinyin.NewArgs()
// 使用 Fallback 参数处理没有拼音的字符
a.Fallback = func(r rune, a pinyin.Args) []string {
if IsNumberOrLetter(r) {
return []string{string(r)}
}
return []string{}
}
s := "12Ha«你好吗"
ps := pinyin.LazyPinyin(s, a)
fmt.Println(strings.Join(ps, ""))
}
$ go run test.go
12Hanihaoma
也可以哦, 那我关了这个pr. 之前没看到还有这么个回调方法
因为业务需要, 增加了一个新的选择.
类似:
上面的字符串将返回:
12Hanihaoma
既: 保留文字中的
数字
,字母