From ce422881bc6db66ea506f8406a8ab919ff6089a5 Mon Sep 17 00:00:00 2001 From: gazebo Date: Sun, 31 Mar 2019 12:13:28 +0800 Subject: [PATCH] - LimitUTF8StringLen --- utils/utils.go | 21 +++++++++++++++++++++ utils/utils_test.go | 30 ++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/utils/utils.go b/utils/utils.go index 8228d086..1224bf32 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -246,3 +246,24 @@ func Base64DecodeMultiString(strs ...string) (decodedData [][]byte, err error) { } return decodedData, nil } + +func LimitStringLen(str string, maxLen int) (limitedStr string) { + if maxLen > 0 { + if strLen := len(str); strLen > maxLen { + str = str[:maxLen] + } + } + return str +} + +func LimitUTF8StringLen(str string, maxLen int) (limitedStr string) { + if maxLen > 0 { + if len(str) > maxLen { + runeList := []rune(str) + if len(runeList) > maxLen { + str = string(runeList[:maxLen]) + } + } + } + return str +} diff --git a/utils/utils_test.go b/utils/utils_test.go index cc3e60dd..16a906e1 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -185,3 +185,33 @@ func TestStruct2MapByJson(t *testing.T) { }) t.Log(mapData) } + +func TestLimitUTF8StringLen(t *testing.T) { + for _, v := range [][]interface{}{ + []interface{}{ + "123456789", + 6, + "123456", + }, + []interface{}{ + "123456789", + 0, + "123456789", + }, + []interface{}{ + "一二345六789", + 6, + "一二345六", + }, + []interface{}{ + "1二345六789", + 0, + "1二345六789", + }, + } { + str := LimitUTF8StringLen(v[0].(string), v[1].(int)) + if str != v[2] { + t.Fatalf("%v处理错误,预期:%v,实际:%s", v[0], v[2], str) + } + } +}