在Golang中,判断字符串是否包含中文可以使用多种实现方法:
方法一:
可以使用unicode包中的函数 func Is(rangeTab *RangeTable, r rune) bool
来判断字符是否属于中文的Unicode范围。以下是一个基于该方法的示例代码:
package main
import (
"fmt"
"unicode"
)
func IsContainChinese(str string) bool {
for _, r := range str {
if unicode.Is(unicode.Scripts["Han"], r) {
return true
}
}
return false
}
func main() {
str := "Hello, 中国!"
if IsContainChinese(str) {
fmt.Println("字符串包含中文")
} else {
fmt.Println("字符串不包含中文")
}
}
方法二:
可以使用unicode包中的函数 func In(r rune, ranges ...*RangeTable) bool
来判断字符是否在中文的Unicode范围内。以下是一个基于该方法的示例代码:
package main
import (
"fmt"
"unicode"
)
func IsContainChinese(str string) bool {
for _, r := range str {
if unicode.In(r, unicode.Scripts["Han"]) {
return true
}
}
return false
}
func main() {
str := "Hello, 中国!"
if IsContainChinese(str) {
fmt.Println("字符串包含中文")
} else {
fmt.Println("字符串不包含中文")
}
}
方法三:
可以使用正则表达式来匹配中文字符,使用regexp包中的函数 func MatchString(pattern string, s string) (matched bool, err error)
来判断字符串是否匹配正则表达式。以下是一个基于该方法的示例代码:
package main
import (
"fmt"
"regexp"
)
func IsContainChinese(str string) bool {
pattern := "[\u4e00-\u9fa5]" // 匹配中文字符的正则表达式
matched, _ := regexp.MatchString(pattern, str)
return matched
}
func main() {
str := "Hello, 中国!"
if IsContainChinese(str) {
fmt.Println("字符串包含中文")
} else {
fmt.Println("字符串不包含中文")
}
}