思考:想模糊匹配某段文本的关键字?
类似像百度搜索的那种情况
不清楚是不是通过输入的内容提取关键字 然后在进行搜索
所以下面写了一个简单的demo
package main
import (
"fmt"
"regexp"
"strings"
)
func main() {
// 检验文本
text := `今天的天气非常的good,很适合爱学习的同学,好日子,好天气,适合学习。`
// 输入的关键字
keyword := "爱学习"
str := ""
for i, r := range []rune(keyword) {
if i != 0 {
str = str + ".*" + string(r)
} else {
str = str + string(r)
}
}
re, _ := regexp.Compile(str)
res := re.FindAllStringSubmatchIndex(text,-1)
tempStr := ""
// 拆剪字符串
for i, ints := range res {
if i == 0 {
tempStr = tempStr + text[:ints[0]] + ReplaceText(keyword,text[ints[0]:ints[1]])
if i == len(res) - 1{
tempStr = tempStr + text[ints[1]:]
}
} else if i == len(res) -1 {
tempStr = tempStr + ReplaceText(keyword,text[ints[0]:ints[1]]) + text[ints[1]:]
} else {
tempStr = tempStr + ReplaceText(keyword,text[ints[0]:ints[1]])
}
}
fmt.Println(tempStr)
}
// 标记文本
func ReplaceText(keyword, temp string) string {
for _, r := range []rune(keyword) {
temp = strings.Replace(temp,string(r),fmt.Sprintf("<span style=\"color:red;\">%s</span>",string(r)),1)
}
return temp
}