项目中涉及到一些用户评论和用户可以自定义发布长段文字功能, 所以就想到项目中必须要加上文字过滤的功能了。 去年做的项目也有评论等功能, 等现在的项目没问题就把这个功能加过去!
还是直接上代码:
//获取关键字数组
func GetKeyWordsList() []string {
file1, err := os.OpenFile("../conf/words_filter.txt", os.O_RDWR|os.O_APPEND|os.O_CREATE, os.ModeType)
if err != nil {
panic(err)
}
defer file1.Close()
// 使用ioutil读取文件所有内容
b, err := ioutil.ReadAll(file1)
if err != nil {
panic(err)
}
a := strings.Replace(string(b),"\r\n", "\n", -1)
return strings.Split(a, "\n")
}
当时由于仅按照\n进行拆分。 得到的行数没问题, 可是结果始终不尽人意, 这段需要注意一下拆分。
//将传入字符串替换为*
func GetStar(str string) string {
if len(str) <= 0 {
return ""
}
result := ""
slen := []rune(str)
for i := 0; i < len(slen); i++ {
result += "*"
}
return result
}
这段的坑是需要rune处理字符串, 不然在Golang中一个中文字符是3长度, 这段需要注意一下处理中文长度的问题。
就到这了, 希望对各位有所帮助