Golang
判断字符是否为汉字,主要有两种方式,一种是使用正则匹配,另外一种是使用系统自带的unicode
包。
正则匹配
var str := "你好,Golang"
var hzRegexp, _ = regexp.Compile("([\u4e00-\u9fa5]+)")
fmt.Println(hzRegexp.MatchString(str))
运行结果是true
,如果要查找子匹配项,可以这样找:
sub := hzRegexp.FindSubmatch([]byte(str))
//第一个匹配的是全部元素
fmt.Println(string(sub[0]))
unicode 包
for _, r := range str {
if unicode.Is(unicode.Scripts["Han"], r) {
fmt.Println("是汉字")
}
}
详细可以看这个地址Han,还可以匹配其它字符。
总结
如果只是单纯判断字符是否为汉字,或字符串是否包含汉字,两种都可以任意使用。如果要获取匹配的内容,一般使用正则,而且正则还可以匹配特殊的字符。