修复日志内容可能过长而无法存入数据库的问题

This commit is contained in:
GoEdgeLab
2022-08-15 15:05:47 +08:00
parent 24c22ea624
commit c7fabff1ab
4 changed files with 37 additions and 1 deletions

View File

@@ -62,3 +62,23 @@ func Similar(s1 string, s2 string) float32 {
return (float32(count)/float32(l1) + float32(count)/float32(l2)) / 2
}
// LimitString 限制字符串长度
func LimitString(s string, maxLength int) string {
if len(s) <= maxLength {
return s
}
if maxLength <= 0 {
return ""
}
var runes = []rune(s)
var rs = len(runes)
for i := 0; i < rs; i++ {
if len(string(runes[:i+1])) > maxLength {
return string(runes[:i])
}
}
return s
}

View File

@@ -28,3 +28,15 @@ func TestSimilar(t *testing.T) {
t.Log(utils.Similar("efgj", "hijk"))
t.Log(utils.Similar("efgj", "klmn"))
}
func TestLimitString(t *testing.T) {
var a = assert.NewAssertion(t)
a.IsTrue(utils.LimitString("", 4) == "")
a.IsTrue(utils.LimitString("abcd", 0) == "")
a.IsTrue(utils.LimitString("abcd", 5) == "abcd")
a.IsTrue(utils.LimitString("abcd", 4) == "abcd")
a.IsTrue(utils.LimitString("abcd", 3) == "abc")
a.IsTrue(utils.LimitString("abcd", 1) == "a")
a.IsTrue(utils.LimitString("中文测试", 1) == "")
a.IsTrue(utils.LimitString("中文测试", 3) == "中")
}