golang - 如何判断字符是不是中文?

如何判断字符是不是中文, 以及中文的标点?

找到中文如何判断了:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := "问"
    var hzRegexp = regexp.MustCompile("^[\u4e00-\u9fa5]$")
    fmt.Println(hzRegexp.MatchString(str))
}

中文标点未知。

阅读 32.4k
5 个回答

http://unicode.org/Public/UNIDATA/Blocks.txt

标点,当然是常用的:
3000..303F; CJK Symbols and Punctuation

Unicode规范比较复杂,中文其实你那个没有包括Non BMP字符,要弄全难度还是比较大。

[\p{Han}]+匹配中文,中文标点不清楚,不过也不多,都写上吧!

go里面好像有支持,无需正则
/*
判断字符串是否包含中文字符
*/
func IsChineseChar(str string) bool {
for _, r := range str {
if unicode.Is(unicode.Scripts["Han"], r) {
return true
}
}
return false
}

不需要正则匹配,内置库函数有,只需要这样判断就行

func main() {
    s1 := "我是汉字abcd"
    var count int
    for _, v := range s1 {
        if unicode.Is(unicode.Han, v) {
            fmt.Println("找到汉字")
            count++
        }
    }
    fmt.Println(count)
}
新手上路,请多包涵

判断是否包含中文字符及符号
func IsChineseChar(str string) bool {

for _, r := range str {
    if unicode.Is(unicode.Scripts["Han"], r) || (regexp.MustCompile("[\u3002\uff1b\uff0c\uff1a\u201c\u201d\uff08\uff09\u3001\uff1f\u300a\u300b]").MatchString(string(r))) {
        return true
    }
}
return false

}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏