如何判断字符是不是中文, 以及中文的标点?
找到中文如何判断了:
package main
import (
"fmt"
"regexp"
)
func main() {
str := "问"
var hzRegexp = regexp.MustCompile("^[\u4e00-\u9fa5]$")
fmt.Println(hzRegexp.MatchString(str))
}
中文标点未知。
如何判断字符是不是中文, 以及中文的标点?
找到中文如何判断了:
package main
import (
"fmt"
"regexp"
)
func main() {
str := "问"
var hzRegexp = regexp.MustCompile("^[\u4e00-\u9fa5]$")
fmt.Println(hzRegexp.MatchString(str))
}
中文标点未知。
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
}
5 回答5.5k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答5.2k 阅读✓ 已解决
2 回答3.1k 阅读✓ 已解决
1 回答5.1k 阅读✓ 已解决
6 回答2.5k 阅读
2 回答2.6k 阅读✓ 已解决
http://unicode.org/Public/UNIDATA/Blocks.txt
标点,当然是常用的:
3000..303F; CJK Symbols and Punctuation
Unicode规范比较复杂,中文其实你那个没有包括Non BMP字符,要弄全难度还是比较大。