Golang 提取字符串中的中文(可贪婪匹配和正常匹配)
匹配效果:
原字符串:
"Yiwu Jingfeng Trading Co., Ltd. 北京市(竞丰)贸易有限公司 (Co.)"
贪婪匹配结果:
"北京市竞丰贸易有限公司"
正常匹配结果:
"北京市(竞丰)贸易有限公司"
代码:
// MatchChineseForStr 提取字符串中的中文
//matchType = 1 贪婪匹配,仅提取中文 2 正常匹配从第一个中文开始到最后一个中文结束
func MatchChineseForStr(str string, matchType int) string {
r := []rune(str)
cnStr := ""
if matchType == 1 {
for i := 0; i < len(r); i++ {
if r[i] <= 40869 && r[i] >= 19968 {
cnStr = cnStr + string(r[i])
}
}
if cnStr == "" {
return str
}
return cnStr
} else {
//提取第一个中文到结尾
beginIndex := false
for i := 0; i < len(r); i++ {
if beginIndex == false {
if r[i] <= 40869 && r[i] >= 19968 {
beginIndex = true
}
}
if beginIndex {
cnStr += string(r[i])
}
}
//去掉尾部非中文
waitRune := []rune(cnStr)
waitRes := ""
endIndex := false
for i := len(waitRune) - 1; i >= 0; i-- {
if endIndex == false {
if waitRune[i] <= 40869 && waitRune[i] >= 19968 {
endIndex = true
}
}
if endIndex {
waitRes += string(waitRune[i])
}
}
//翻转
lastStr := ""
lastRune := []rune(waitRes)
for i := len(lastRune) - 1; i >= 0; i-- {
lastStr += string(lastRune[i])
}
if lastStr == "" {
return str
}
return lastStr
}
}