创建第三方库
网上搜下了没有很好的例子,我就找个了简单的库来参考着弄,中间改来改去,搞了几个小时,也算成功了。
直接上效果
func main() {
res := filterStr.Cut.CutString("有钱没钱回家过年", 3)
fmt.Println(res)
err := filterStr.Filter.FilStr("考试作弊")
fmt.Println(err)
}
// 结果
有钱没
存在敏感词
下面说下怎么搞,俺也是新手,第一次搞,所以有啥问题,大家指导下,谢谢。
创建库
这里说明下库是git
库,所以需要在自己的github.com
上创建。
拉取项目
可以使用命令行
git clone https://github.com/charliecen/filterStr.git
也可以使用可视化工具sourcetree
,根据个人喜欢。由于网络问题,我这里拉取和提交用命令行,commit
就用sourcetree
注意,本地的文件路径必须是/github.com/charliecen/filterStr
,如果不是则需要创建。后面需要用到
编辑代码
go.mod 内容
module github.com/charliecen/filterStr
代码文件
这里列出一个文件cut_str.go
,仅供参考
package filterStr
import (
"regexp"
"strings"
"unicode"
)
type cutStr struct {}
var Cut = new(cutStr)
func (c *cutStr) CutString(name string, length int) string {
// 去除前后空格
name = strings.TrimSpace(name)
// 请求参数字符串
var newName = name
if len(name) > length {
// 判断字符串是否是中文
if c.isChineseChar(name) {
// 字符串转rune数组,并截取到有效位置
runeName := []rune(name)
newName = string(runeName[:length])
} else {
// 否则直接截取有效位置
newName = name[:length]
}
}
return newName
}
// 判断是否中文字符
func (c *cutStr) 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
}
README
这个自己写下说明,可以参考别人的
最后代码提交,并打下标签,网络原因,我直接在浏览器里添加了。
添加标签
新建项目
// 新项目使用第三方包,由于刚上传的代码,线上还未更新到最新版本,所以这里需要指定最新版本号
# go get github.com/charliecen/filterStr@v1.0.2
go: downloading github.com/charliecen/filterStr v1.0.2
go get: upgraded github.com/charliecen/filterStr v1.0.1 => v1.0.2
下面就可以使用了,使用的方式在开始位置
如果需要用的外部文件,例如配置文件等,需要拷贝到当前项目的根目录下,否则找不到。