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,还可以匹配其它字符。

总结

如果只是单纯判断字符是否为汉字,或字符串是否包含汉字,两种都可以任意使用。如果要获取匹配的内容,一般使用正则,而且正则还可以匹配特殊的字符。